我的数据包含一堆浮点,我想将其格式化如下:
- 千分隔符是一个点
- 小数分隔符为逗号
- 始终显示两个小数
- 添加欧元标志
这就是我到目前为止得到的:
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的格式化程序接受一千个分隔符,但它可以是,
或_
。现在,您最终想要.
,但不能直接这样做。你想要,
作为小数分隔符,所以这也很危险。所以我们在那里用_
作为分隔符,只是后来用.
代替了。我们所做的其他替换是十进制部分中的.
到,