gpt4 book ai didi

pandas - 将不同的格式应用于不同的列数据框

转载 作者:行者123 更新时间:2023-12-05 08:55:51 25 4
gpt4 key购买 nike

我有以下 df:

table:

A B C D
0 0.000000       0.000000      -0.002520          -0.002520
1 0.209772       0.016262       0.003411        0.024343
2 -0.006474      -0.000152       0.000152           0.000000

真正的 df 大约有 12 列和 40 行。

我想改变它的格式:

我面临的问题是如何将一种格式应用于某些列,并将不同的格式应用于其他列。通常我习惯将格式应用于整个 dfs,而不是单独应用于列。

期望的输出应该是这样的:

table:

A B C D
0 0.00%       0.000%      -0.000%          -0.00%
1 0.20%       0.067%       0.001%        0.43%
2 -0.00%      -0.000%       0.015%           0.00%

正如您在所需的输出列中看到的那样,A 和 D 被四舍五入为 2 个有效数字,B 和 C 被四舍五入为 3 个有效数字,并向所有这些数字添加了 %

这是我尝试过但没有奏效的方法:

 format_AD = "{0:.2f}%".format
format_BC= "{0:.3f}%".format

format_changeAD=[table.loc[:,['A','D']]]
format_changeBC=[table.loc[:,['B','C']]]

format_changeAD.apply(format_AD)
format_changeBC.apply(format_BC)

return table

最佳答案

如果您创建一个包含格式的字典,您可以使用 style.format:

mapper =  {'A': '{0:.2f}%',
'B': '{0:.3f}%',
'C': '{0:.3f}%',
'D': '{0:.2f}%'}

df.style.format(mapper)

或者使用 apply(默认是基于列的,axis=0)

df.apply(lambda x: x.apply(mapper[x.name].format))


A B C D
0 0.00% 0.000% -0.003% -0.00%
1 0.21% 0.016% 0.003% 0.02%
2 -0.01% -0.000% 0.000% 0.00%

如果您有很少的不同格式和很多列,您当然可以生成映射器字典。

关于pandas - 将不同的格式应用于不同的列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43889394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com