熊猫:计算每个类别的列百分比

时间:2018-12-02 06:41:24

标签: pandas

我有一个这样的数据框:

   Class   Boolean  Sum
0       1         0  10
1       1         1  20
2       2         0  15
3       2         1  25
4       3         0  52
5       3         1  48

我想为每个类计算0/1的百分比,例如,输出可能是:

   Class   Boolean  Sum  %
0       1         0  10  0.333
1       1         1  20  0.666
2       2         0  15  0.375
3       2         1  25  0.625
4       3         0  52  0.520
5       3         1  48  0.480

1 个答案:

答案 0 :(得分:3)

将列SumGroupBy.transform分开,以与原始DataFrame相同长度的返回Series用聚合值填充:

df['%'] = df['Sum'].div(df.groupby('Class')['Sum'].transform('sum'))
print (df)
   Class  Boolean  Sum         %
0      1        0   10  0.333333
1      1        1   20  0.666667
2      2        0   15  0.375000
3      2        1   25  0.625000
4      3        0   52  0.520000
5      3        1   48  0.480000

详细信息:

print (df.groupby('Class')['Sum'].transform('sum'))
0     30
1     30
2     40
3     40
4    100
5    100
Name: Sum, dtype: int64