熊猫分组所有功能?

iha*_*nny 4 python group-by pandas

我正在使用该pandas groupby+agg功能生成不错的报告

aggs_dict = {'a':['mean', 'std'], 'b': 'size'}
df.groupby('year').agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)

我想aggs_dict在整个数据帧上将其作为一个组使用,不除以年,例如:

df.groupall().agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)

要么:

df.agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)

但是找不到任何优雅的方法。.请注意,在我的实际代码中,代码aggs_dict非常复杂,因此操作起来很麻烦:

df.a.mean()
df.a.std()
df.b.size()
....
Run Code Online (Sandbox Code Playgroud)

我错过了一些简单而美好的东西吗?

小智 6

您还可以使用函数直接分组:

 df.groupby(lambda x: True).agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)


Ami*_*ory 5

您可以添加一个虚拟列:

df['dummy'] = 1
Run Code Online (Sandbox Code Playgroud)

然后 groupby + agg 就可以了:

df.groupby('dummy').agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)

然后完成后删除它


bun*_*nji 5

Ami Tavory的答案是实现此目标的好方法,但万一您想要一个不需要创建新列并随后删除它们的解决方案,则可以执行以下操作:

df.groupby([True]*len(df)).agg(aggs_dict) 
Run Code Online (Sandbox Code Playgroud)