如何在pandas中按分类列对值进行分组求和?

7

我有一些数据,其中有一个分类列将数据分组并在数据框中的其他列中使用,如下所示df

id      subid      value
1       10         1.5
1       20         2.5
1       30         7.0 
2       10         12.5
2       40         5

我需要的是一列,它包含每个id内每个subid的平均值。例如df可能是:

id      subid      value     id_sum    proportion
1       10         1.5       11.0      0.136
1       20         2.5       11.0      0.227
1       30         7.0       11.0      0.636
2       10         12.5      17.5      0.714
2       40         5         17.5      0.285

现在,我尝试通过以下方式获取id_sum列:
df['id_sum'] = df.groupby('id')['value'].sum()

但这似乎并不奏效。我的最终目标是获得 proportion 列。正确的获取方式是什么?

1个回答

8

我们开始吧

df['id_sum'] = df.groupby('id')['value'].transform('sum')
df['proportion'] = df['value'] / df['id_sum']

1
哇,谢谢!那很简单。出于某种原因我没有想到transform - sfactor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接