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

sfa*_*tor 7 python aggregate pandas

我的数据有一个分类列,该列将数据和其他列分组在 dataframe 中df

id      subid      value
1       10         1.5
1       20         2.5
1       30         7.0 
2       10         12.5
2       40         5
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

现在,我尝试通过执行以下操作来获取 id_sum 列:

df['id_sum'] = df.groupby('id')['value'].sum()
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有像希望的那样发挥作用。我的最终目标是获得proportion专栏。获得它的正确方法是什么?

ℕʘʘ*_*ḆḽḘ 8

开始了

df['id_sum'] = df.groupby('id')['value'].transform('sum')
df['proportion'] = df['value'] / df['id_sum']
Run Code Online (Sandbox Code Playgroud)