我将数据存储在pandas DataFrame中,如下所示:
cat val1 val2 val3 val4
A 7 10 0 19
B 10 2 1 14
C 5 15 6 16
我想计算每个值具有的类别(
cat
)的百分比。例如,对于类别
A
,val1
是7,行总数是36。结果值将是7/36,因此val1
是类别A
的19.4%。我的预期结果如下所示:
cat val1 val2 val3 val4
A .194 .278 .0 .528
B .370 .074 .037 .519
C .119 .357 .143 .381
有一个简单的方法来计算这个吗?
最佳答案
div +总和
对于矢量化解决方案,将数据帧沿axis=0
除以axis=1
上的总和。您可以使用set_index
+ reset_index
忽略标识符列。
df = df.set_index('cat')
res = df.div(df.sum(axis=1), axis=0)
print(res.reset_index())
cat val1 val2 val3 val4
0 A 0.194444 0.277778 0.000000 0.527778
1 B 0.370370 0.074074 0.037037 0.518519
2 C 0.119048 0.357143 0.142857 0.380952
关于python - 计算pandas DataFrame中的行百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50820659/