熊猫分组聚合多个总和

时间:2021-04-07 01:47:29

标签: python pandas

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

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

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

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

3 个答案:

答案 0 :(得分:1)

您不能真正执行 ('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())
                  )

答案 1 :(得分:0)

这是罪魁祸首('Exposure1', 'sum') / ('Exposure2', 'sum')

在这个 ('Exposure1', 'sum') 是一个元组,('Exposure2', 'sum') 是另一个元组。并且没有为元组定义 / 操作。请使用示例 DataFrame 解释您要实现的目标。

答案 2 :(得分:0)

我试图将 Exposure1 的总和值除以 Exposure2 的总和值。 我可以得到 Exposure1 的总和值: grouped_columns = df1.groupby(['Parent1', 'Parent2']).agg(Attr_fac = ('Exposure1', 'sum'))。我想添加额外的总和列(不像这个)。