具有多列的数据框的不同聚合
Posted
技术标签:
【中文标题】具有多列的数据框的不同聚合【英文标题】:Different aggregation for dataframe with several columns 【发布时间】:2021-11-21 07:04:14 【问题描述】:我正在寻找一些捷径来减少所需的手动分组:
我有一个包含许多列的数据框。当按“级别”对数据框进行分组时,我想使用 nunique() 对两列进行分组,但所有其他列(大约 60 列代表从 2021 年开始的年份)使用 mean()。
有人知道如何定义“其余”列吗? 谢谢!
【问题讨论】:
【参考方案1】:我会这样做
import pandas as pd
df = pd.DataFrame('X':[1,1,1,2,2,2],'A':[1,2,3,4,5,6],'B':[1,2,3,4,5,6],'C':[7,8,9,10,11,12],'D':[13,14,15,16,17,18],'E':[19,20,21,22,23,24])
aggdct = dict.fromkeys(df.columns, pd.Series.mean)
del aggdct['X']
aggdct['A'] = pd.Series.nunique
print(df.groupby('X').agg(aggdct))
输出
A B C D E
X
1 3 2 8 14 20
2 3 5 11 17 23
说明:我准备了dict
以及如何使用 dict.fromkeys
进行聚合的信息,它确实提供了 dict,其中键是列名,值是 pd.Series.mean
函数,然后删除要在 groupby 中使用的列并将选定列更改为持有pd.Series.nunique
而不是pd.Series.mean
【讨论】:
这正是我想要的。非常感谢!以上是关于具有多列的数据框的不同聚合的主要内容,如果未能解决你的问题,请参考以下文章
在 Python/Pandas 中执行不同操作的多列有条件地聚合分组数据