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)
您可以添加一个虚拟列:
df['dummy'] = 1
Run Code Online (Sandbox Code Playgroud)
然后 groupby + agg 就可以了:
df.groupby('dummy').agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)
然后完成后删除它。
Ami Tavory的答案是实现此目标的好方法,但万一您想要一个不需要创建新列并随后删除它们的解决方案,则可以执行以下操作:
df.groupby([True]*len(df)).agg(aggs_dict)
Run Code Online (Sandbox Code Playgroud)