我有个问题。我有一个相对较大的熊猫数据框,如下所示:
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%)