我有一个数据框架,有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/