如何在聚合函数中选择多个列?

时间:2019-08-08 19:14:20

标签: python pandas

我有这样的数据:

A,B,C,D
1,50,1 ,3.9
2,20,22,1.5
3,10,10,2.3
2,15,11,1.8
1,16,13,4.2

,我想按A对它们进行分组,以便将meanB分别作为CD的总和。
解决方案是这样的:

df = df.groupby(['A']).agg({
    'B': 'mean', 'C': 'mean', 'D': sum
})

我在问是否有一种方法可以为同一功能选择多个列,而不是像BC那样重复它

1 个答案:

答案 0 :(得分:0)

如果每列最多需要一个聚合,则可以将聚合存储在字典{func: col_list}中,然后在聚合时将其解压缩。

d = {'mean': ['B', 'C'], sum: ['D']}

df.groupby(['A']).agg({col: f for f,cols in d.items() for col in cols})
#      B     C    D
#A                 
#1  33.0   7.0  8.1
#2  17.5  16.5  3.3
#3  10.0  10.0  2.3