首页 > 解决方案 > Pandas groupby 聚合多个总和

问题描述

新手问题。我想使用两个汇总列来计算数据框列,如下所示:

grouped_columns = df1.groupby(['Parent1', 'Parent2']).agg(Attr_fac = ('Exposure1', 'sum') / ('Exposure2', 'sum'))

不断收到 TypeError: Unsupported operand type(s) for /: 'tuple' 和 'tuple'

Exposure1 和 Exposure2 是从 excel 文件中读取的数值列。请帮忙,我做错了什么?

标签: pythonpandas

解决方案


你真的不能这样做,('Exposure1', 'sum') / ('Exposure2', 'sum')因此会出现错误。你可以试试:

grouped_columns = (df1.groupby(['Parent1', 'Parent2'])
                      [['Exposure1','Exposure2']].sum()
                      .assign(Attr_fac=lambda x: x['Exposure1']/x['Exposure2'])
                  )

或者groupby().apply()

grouped_columns = (df1.groupby(['Parent1', 'Parent2'])
                      .apply(lmabda x: x['Exposure1'].sum()/x['Exposure2'].sum())
                  )

推荐阅读