我的数据有一个分类列,用于对数据进行分组,其他列在数据框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
列。得到这个的正确方法是什么?
答案 0 :(得分:4)
我们走了
df['id_sum'] = df.groupby('id')['value'].transform('sum')
df['proportion'] = df['value'] / df['id_sum']