通过对不同列使用不同聚合的 pandas 数据框进行分组
Posted
技术标签:
【中文标题】通过对不同列使用不同聚合的 pandas 数据框进行分组【英文标题】:Group by with a pandas dataframe using different aggregation for different columns 【发布时间】:2017-05-07 06:12:07 【问题描述】:我有一个 pandas 数据框 df
与列 [a, b, c, d, e, f]
。我想在df
上进行分组。我可以最好地描述它应该在 SQL 中做什么:
SELECT a, b, min(c), min(d), max(e), sum(f)
FROM df
GROUP BY a, b
如何通过在我的数据框df
上使用 pandas 来进行此组?
考虑df
:
a b c d e f
1 1 2 5 9 3
1 1 3 3 4 5
2 2 4 7 4 4
2 2 5 3 8 8
我希望结果是:
a b c d e f
1 1 2 3 9 8
2 2 4 3 8 12
【问题讨论】:
请提供示例数据框和预期输出。 欺骗:***.com/questions/33217702/… 而这个:***.com/questions/30674708/… 【参考方案1】:使用agg
df = pd.DataFrame(
dict(
a=list('aaaabbbb'),
b=list('ccddccdd'),
c=np.arange(8),
d=np.arange(8),
e=np.arange(8),
f=np.arange(8),
)
)
funcs = dict(c='min', d='min', e='max', f='sum')
df.groupby(['a', 'b']).agg(funcs).reset_index()
a b c e f d
0 a c 0 1 1 0
1 a d 2 3 5 2
2 b c 4 5 9 4
3 b d 6 7 13 6
您的数据
a b c e f d
0 1 1 2 9 8 3
1 2 2 4 8 12 3
【讨论】:
以上是关于通过对不同列使用不同聚合的 pandas 数据框进行分组的主要内容,如果未能解决你的问题,请参考以下文章
Pandas Groupby:同一列上的聚合,但总计基于两个不同的标准/数据框
为 pandas groupby 中的不同特征分配不同的聚合函数
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式