我有一个数据框架,有4列、ID和3个类别,结果分为

  <80% 80-90 >90
id
1   2     4    4
2   3     6    1
3   7     0    3

我想将其转换为百分比,即:
   <80% 80-90 >90
id
1   20%   40%  40%
2   30%   60%  10%
3   70%    0%  30%

这看起来应该在熊猫的能力范围内,但我就是搞不清楚。
事先谢谢!

最佳答案

您可以使用basic pandas operators.div.sum来执行此操作,并使用axis参数确保按您希望的方式进行计算:

cols = ['<80%', '80-90', '>90']
df[cols] = df[cols].div(df[cols].sum(axis=1), axis=0).multiply(100)

计算每列的总和(df[cols].sum(axis=1)。axis=1使求和发生在行中,而不是列中。
将数据帧除以结果序列(df[cols].div(df[cols].sum(axis=1), axis=0)。axis=0使划分发生在列之间。
要完成,请将结果乘以100,使其为0到100之间的百分比,而不是0到1之间的比例(或者您可以跳过此步骤并将其存储为比例)。

关于python - pandas将列转换为总计的百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42006346/

10-12 23:48