我有一个数据帧的值,如:
name action time
------------------------------
Sam enters building 20:00
Chris enters building 20:15
Sam walks up stairs 20:20
Steve leaves building 20:25
James enters building 20:30
Chris takes elevator 20:32
Sam leaves building 20:35
Chris leaves building 20:40
Sam enters building 20:45
...
我想得到每个人不同行动的数量。这一点我可以通过df.groupby(['name','action'])来完成,因为索引=False.size()
然而,这给了我一个视觉效果,我不能做太多。我想将这些计数用于不同的目的。我如何将这些数据放入一个可访问的数据框中,以便获得每个人进出大楼的次数等信息。例如,我可以像
df['name'='Sam'
你也可以使用你最初的想法。在本例中,您将获得熊猫系列。您可以直接为感兴趣的值编制索引。
table = df.groupby(['name','action'], as_index=False).size()
table['Sam']['enters building']
只需使用count
即可-size
不是pandas
中的聚合函数,这就是为什么您的命令as_index=False
不起任何作用。
df.groupby(['name','action'], as_index=False).count()
产出:
name action time
0 Chris enters building 1
1 Chris leaves building 1
2 Chris takes elevator 1
3 James enters building 1
4 Sam enters building 2
5 Sam leaves building 1
6 Sam walks up stairs 1
7 Steve leaves building 1
要使其成为数据帧,可以使用.reset_index()
,然后将其设置为df。
df=df.groupby(['name','action'], as_index=False).size().reset_index()
我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作:
如何通过键访问Groupby对象中相应的Groupby数据框? 使用以下groupby: 我可以迭代它来获取密钥和组: 我想能够访问一个组的关键: 但是当我试着用这样做时,我得到了一个奇怪的对象,它似乎没有任何与我想要的数据帧对应的方法。 我能想到的最好的办法是: 但是考虑到熊猫在这些事情上通常有多好,这有点令人讨厌。 这样做的内置方法是什么?
我正在尝试通过ID和日期聚合数据帧。假设我有一个DataFrame: 我想通过ID和日期(频率=1W)聚合该值,并得到一个dataframe如下所示: 我理解它可以通过迭代ID并使用grouper聚合价格来实现。有没有更有效的方法不迭代IDS?多谢。
我正在考虑将dataset1分解为每个“T”类型的多个记录,然后与DataSet2连接。但是你能给我一个更好的方法,如果数据集变大了,它不会影响性能吗?
有一个数据帧: 以及熊猫系列: 如何创建包含c1在list1中的行的新数据帧。 输出:
我需要在我的中聚合一个数组。 数据帧是这样创建的 值是一个数组 我想这样想 但我有以下错误 分析异常:由于数据类型不匹配,u“无法解析‘sum(values)’:函数sum需要数字类型,而不是ArrayType(StringType,true);第0行位置0” 数组的维数始终相同。但每次运行的尺寸可能会变化,接近100的长度。 如何在不进行RDD的情况下进行聚合?