2015-10-20 86 views
0

我有一個問題。我有一個相對龐大的熊貓數據幀像這樣的:如何獲得列值作爲熊貓數據框中其他列值的百分比

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)的想法,但我真的不知道如何開始使用它,例如獲得例如,每個值的百分比值。對此的幫助將非常感激。

回答

2

像這樣?

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組成。然後,我將您的代碼分別應用到兩個框架並再次合併它們。謝謝! –

相關問題