Python 将不同的聚合函数分配给groupby中的不同要素

Python 将不同的聚合函数分配给groupby中的不同要素,python,pandas,aggregate,pandas-groupby,Python,Pandas,Aggregate,Pandas Groupby,我有如下数据(我有100列,而不是4列) 导致 age a b c 0 52 4 3 2 1 52 24 2 5 2 24 31 3 8 3 24 2 4 2 4 24 3 3 1 我想按年龄对数据进行分组,找出一些特征的平均值和剩余特征的总和。我试过这个: feats = ['a', 'b'] df.groupby('age').agg({feats:['mean'], 'c':['sum']}) 因为我在真

我有如下数据(我有100列,而不是4列)

导致

    age a   b   c
0   52  4   3   2
1   52  24  2   5
2   24  31  3   8
3   24  2   4   2
4   24  3   3   1
我想按年龄对数据进行分组,找出一些特征的平均值和剩余特征的总和。我试过这个:

feats = ['a', 'b']
df.groupby('age').agg({feats:['mean'], 'c':['sum']})

因为我在真实数据中有100个特征,所以我无法将函数(我有多个函数要分配:RMS、峰度、能量指数等)分配给单个特征(我可以,但这非常耗时且不明智)。有什么方法可以实现这一点吗?

使用字典理解

agg_d = {i:'mean' for i in feats}
agg_d['c'] = 'sum'

df.groupby('age').agg(agg_d)
输出:

      a         b   c
age                  
24   12  3.333333  11
52   14  2.500000   7
更新,您可以使用列表使用多个聚合函数:

agg_d = {i:['sum','max','first', lambda x: sum(x**2)] for i in feats}
agg_d['c'] = 'sum'

那么,在这100个特征中,有没有什么模式是你想要求和的,以及你想要的平均值?您可以使用字典理解和一些过滤逻辑来创建聚合字典。@ScottBoston我有传感器功能和事件代码。我想找出传感器特征的平均值和事件代码的总和。但是,字典是个好主意。我试试看。谢谢你。谢谢你和gig'em同事Aggie:)如果我有多个功能而不是一个,我该怎么办?@ArchDesai gig'em!你可以用一个列表来代替像这样的“平均值”
agg_d={i:['sum','max','first',lambda x:x**2]for i in feats}
非常感谢你。这就是我要找的。我接受了答案。请编辑您对此的回答(对不起,我后来添加了多个有问题的函数)?@Scott Boston,在应用上述聚合时:
ValueError:必须生成聚合值
。也许应该是
agg_d={i:['sum','max','first',lambda x:sum(x**2)]作为我的专长}
?@lpj。。。哎呀,你说得对。纠正得好。非常感谢。
agg_d = {i:['sum','max','first', lambda x: sum(x**2)] for i in feats}
agg_d['c'] = 'sum'