以欧洲格式显示熊猫数据框

时间:2018-12-21 19:28:06

标签: python pandas formatting locale

我找到了有关如何将具有欧洲格式的csv文件加载到熊猫数据帧并以美国格式显示它们的问题的答案(2,345.21)。但是,如何在熊猫中以欧洲格式(2.345,21)显示以美国格式保存的花车。

我试图在此处更改点和逗号:

来自

pd.options.display.float_format = '{:,.2f}'.format

pd.options.display.float_format = '{:.,2f}'.format

但这不起作用。另一种可能是将类型更改为字符串,然后用逗号替换点,但这不是更优雅的方法吗?


似乎可以与区域设置分隔符一起使用。 如果您的操作系统使用的语言环境为德国,则非常简单:

import pandas as pd
import locale
locale.setlocale(locale.LC_ALL, '')
pd.options.display.float_format = '{:n}'.format
df = pd.DataFrame([2123.4567, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print(df)

导致:

         cost
foo  2.123,46
bar   234,568
baz   345,679
quux  456,789

但是,现在我正在处理格式化精度和高数字格式的问题。以下格式命令的结果有些令人惊讶。

#precision
pd.options.display.float_format = '{:.2n}'.format
print(df)

        cost
foo  2,1e+03
bar  2,3e+02
baz  3,5e+02
quux 4,6e+02

#high numbers
pd.options.display.float_format = '{:n}'.format
df = pd.DataFrame([1222333, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print(df)

            cost
foo  1,22233e+06
bar      234,568
baz      345,679
quux     456,789

1 个答案:

答案 0 :(得分:1)

开始之前:

conda install babel

然后尝试:

from babel.numbers import decimal, format_decimal
format_decimal(22222345.22, format='#,##0.##;-#', locale='de')