如何获得列值作为熊猫数据框中其他列值的百分比

问题描述:

我有一个问题。我有一个相对庞大的熊猫数据帧像这样的:如何获得列值作为熊猫数据框中其他列值的百分比

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%) 
+0

差不多!我希望将所有列值从'column3'直到'columnN'显示为'column2'的百分比,并且只有'column2'中的值显示为'column1'的百分比。 –

+0

@EdChum:不是每个值都应该是前一列的百分比。只有column2中的值应该是column1的百分比。 Column3-ColumnN的值应该是Column2的百分比。 –

+0

更新:好的,我通过将数据帧分成两部分来获得我想要的结果,其中一部分由column1和column2组成,一部分由column2-columnN组成。然后,我将您的代码分别应用到两个框架并再次合并它们。谢谢! –