首页 > 解决方案 > 如何按分组总和划分熊猫列中的元素

问题描述

我有一个看起来像这样的数据框,df1:

col1   col2
 A      2
 A      3
 A      4
 B      4
 B      8

现在,我想计算col2每个唯一项目的价值百分比col1。因此,我希望结果是:

col1   col2
 A      0.22
 A      0.33
 A      0.33
 B      0.33
 B      0.67

因此,col2对于 中的唯一元素,之和必须为 1 col1。有谁知道如何在不使用 for 循环的情况下做到这一点?

标签: pythonpandasdataframe

解决方案


使用GroupBy.transformfor sums 到 Series 并除以原始列col2

df['col2'] /= df.groupby('col1')['col2'].transform('sum')
#working like
#df['col2'] = df['col2'] / df.groupby('col1')['col2'].transform('sum')
print (df)
  col1      col2
0    A  0.222222
1    A  0.333333
2    A  0.444444
3    B  0.333333
4    B  0.666667

推荐阅读