首页 > 解决方案 > 通过 agg 为 pandas 组编写多个列名

问题描述

我想在熊猫中进行分组并计算多个不同列的总和和平均值。下面是一个例子。

 grouped =df.groupby(['id']).agg({
                    'column1': ['sum','avg'],
                    'column2': ['sum','avg'],
                    'column3': ['sum','avg'],
                    'column4': ['sum','avg']
                    ....                  
                    'column8': ['sum','avg'] })

如何避免编写每个列名。有没有办法将它与所有列的某种类型的函数结合起来,所以我只能写 ['sum', 'avg'] 一次?

标签: pythonpandas

解决方案


你可以这样做:

df[cols_list].groupby(['id']).agg([np.mean, np.std])

cols_list您感兴趣的列的列表在哪里加上您的id,所以它仍然可以分组:['id','column1',...,'column8']在您的示例中。


推荐阅读