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

时间:2016-10-12 12:05:27

标签: python pandas aggregate

我的数据有一个分类列,用于对数据进行分组,其他列在数据框df中这样。

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

我需要的是一个列,其中包含每个subid中每个id的平均值。例如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 个答案:

答案 0 :(得分:4)

我们走了

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