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

2024-04-20 09:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据:

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对它们进行分组,我将mean作为BC,并对D求和。
解决方案如下:

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

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


Tags: 数据方法函数df解决方案meanaggsum
1条回答
网友
1楼 · 发布于 2024-04-20 09:17:56

如果每列最多需要一个聚合,可以将聚合存储在dict{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

相关问题 更多 >