Pandas格式,带有货币符号,自定义千位分隔符和自定义小数分隔符



我的数据包含一堆浮点,我想将其格式化如下:

  1. 千分隔符是一个点
  2. 小数分隔符为逗号
  3. 始终显示两个小数
  4. 添加欧元标志

这就是我到目前为止得到的:

import pandas as pd
df = pd.DataFrame({'x': [1.50, 
2.3456,
10000.22,
100.3,
6800]})
df['x'].map('{:.2f} €'.format)

这产生

0        1.50 €
1        2.35 €
2    10000.22 €
3      100.30 €
4     6800.00 €
Name: x, dtype: object

然而,期望的结果是:

0        1,50 €
1        2,35 €
2   10.000,22 €
3      100,30 €
4    6.800,00 €
Name: x, dtype: object

如何做到这一点?

#                      _ HERE
In [113]: df["x"].map("{:_.2f} €".format).str.translate(str.maketrans("_.", ".,"))
Out[113]:
0         1,50 €
1         2,35 €
2    10.000,22 €
3       100,30 €
4     6.800,00 €
Name: x, dtype: object

python的格式化程序接受一千个分隔符,但它可以是,_。现在,您最终想要.,但不能直接这样做。你想要,作为小数分隔符,所以这也很危险。所以我们在那里用_作为分隔符,只是后来用.代替了。我们所做的其他替换是十进制部分中的.,

最新更新