我有个问题。我有一个相对较大的熊猫数据框,如下所示:

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


我现在想用的是将字符串添加到每个值,如下所示:
对于Column2中的每个值,添加一个字符串,将其显示为该值占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%)

10-07 15:16