如何获得列值作为熊猫数据框中其他列值的百分比
问题描述:
我有一个问题。我有一个相对庞大的熊猫数据帧像这样的:如何获得列值作为熊猫数据框中其他列值的百分比
df:
Column1 Column2 Column3 Column4
0 100 50 25 10
1 200 100 50 10
2 10 10 5 5
3 20 15 10 5
4 10 7 7 7
我现在想用它添加字符串到每个值做如下: 对于列2的每个值,增加显示该值作为字符串Column1中的值的百分比。然后,对于Columns3中的所有值,直到结尾(ColumnN)为每个值添加一个以Column2的百分比显示此值的字符串。最后的结果是这样的:
df:
Column1 Column2 Column3 Column4
0 100 50 (50%) 25 (50%) 10 (20%)
1 200 100(50%) 50 (50%) 10 (10%)
2 10 10 (100%) 5 (50%) 5 (50%)
3 20 15 (75%) 10 (66,6%) 5 (33,3%)
4 10 7 (70%) 7 (100%) 7 (100%)
我的最后加入字符串中的相应值将可能是这样的df['col'] = 'str' + df['col'].astype(str)
的想法,但我真的不知道如何开始使用它,例如获得例如,每个值的百分比值。对此的帮助将非常感激。
答
像这样?
In [95]: (df.astype(str) +
' (' +
df.apply(lambda x: (100 * x/x['Column1']), axis=1).astype(str) +
'%)')
Out[95]:
Column1 Column2 Column3 Column4
0 100 (100.0%) 50 (50.0%) 25 (25.0%) 10 (10.0%)
1 200 (100.0%) 100 (50.0%) 50 (25.0%) 10 (5.0%)
2 10 (100.0%) 10 (100.0%) 5 (50.0%) 5 (50.0%)
3 20 (100.0%) 15 (75.0%) 10 (50.0%) 5 (25.0%)
4 10 (100.0%) 7 (70.0%) 7 (70.0%) 7 (70.0%)
差不多!我希望将所有列值从'column3'直到'columnN'显示为'column2'的百分比,并且只有'column2'中的值显示为'column1'的百分比。 –
@EdChum:不是每个值都应该是前一列的百分比。只有column2中的值应该是column1的百分比。 Column3-ColumnN的值应该是Column2的百分比。 –
更新:好的,我通过将数据帧分成两部分来获得我想要的结果,其中一部分由column1和column2组成,一部分由column2-columnN组成。然后,我将您的代码分别应用到两个框架并再次合并它们。谢谢! –