我有以下 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
Run Code Online (Sandbox Code Playgroud)
真正的 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%
Run Code Online (Sandbox Code Playgroud)
正如您在所需的输出列中所看到的,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
Run Code Online (Sandbox Code Playgroud)
如果您创建包含格式的字典,您可以使用style.format:
mapper = {'A': '{0:.2f}%',
'B': '{0:.3f}%',
'C': '{0:.3f}%',
'D': '{0:.2f}%'}
df.style.format(mapper)
Run Code Online (Sandbox Code Playgroud)
或者使用 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%
Run Code Online (Sandbox Code Playgroud)
如果你有几个不同的格式和很多列,你当然可以生成映射器字典。
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |