2024-04-20 09:17:56 发布
网友
我有这样的数据:
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作为B和C,并对D求和。 解决方案如下:
A
mean
B
C
D
df = df.groupby(['A']).agg({ 'B': 'mean', 'C': 'mean', 'D': sum })
我想问的是,是否有一种方法可以为同一个函数选择多个列,而不是像B和C那样重复它
如果每列最多需要一个聚合,可以将聚合存储在dict{func: col_list}中,然后在聚合时将其解压缩
{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
如果每列最多需要一个聚合,可以将聚合存储在dict
{func: col_list}
中,然后在聚合时将其解压缩相关问题 更多 >
编程相关推荐