我有下面的数据框
item1 item2 item3
x y z
x1 y1 z1
x y2 z2
x y z1
x2 y z
x2 y1 z2
我想要找出一列中每个值对该列中所有值的贡献百分比( x,x1,x2在item1中的贡献与item2和item3相同)
下面必须是结果数据框。
item1 %con_item1 item2 %con_item2 item3 %con_item3
x 50 y 50 z 33.33
x1 16.66 y1 33.33 z1 33.33
x2 33.33 y2 16.66 z2 33.33
发布于 2018-06-21 05:01:55
在normalize
参数设置为True的情况下使用value_counts
:
pd.concat([df[i].value_counts(normalize=True).reset_index() for i in df.columns], axis=1)
输出:
index item1 index item2 index item3
0 x 0.500000 y 0.500000 z1 0.333333
1 x2 0.333333 y1 0.333333 z2 0.333333
2 x1 0.166667 y2 0.166667 z 0.333333
更新了缩放和列命名的答案:
pd.concat([df[i].value_counts(normalize=True)
.mul(100.0)
.rename_axis(i)
.reset_index(name='%con_'+i) for i in df.columns], axis=1)
输出:
item1 %con_item1 item2 %con_item2 item3 %con_item3
0 x 50.000000 y 50.000000 z1 33.333333
1 x2 33.333333 y1 33.333333 z2 33.333333
2 x1 16.666667 y2 16.666667 z 33.333333
https://stackoverflow.com/questions/50956739
复制相似问题