如何将浮点数格式化为千位,反转点和逗号?

时间:2016-02-26 20:10:07

标签: python pandas format dataframe

如何从pandas数据框格式化浮点数,用点和逗号分隔数千,而不是逗号和点? ?

输入:

112299420.40

实际输出:

112,299,420.40

必需的输出:

112.299.420,40

我的代码:

pd.set_option('display.float_format', lambda x: '{:,.2f}'.format(x) if abs(x) < 10000 else '{:,.0f}'.format(x))

如何更改此代码以生成所需的输出?

我试图以直观的方式改变它,但没有成功......

来自: '{:,.2f}'

收件人: '{:.,2f}'

1 个答案:

答案 0 :(得分:2)

Python 2.7字符串格式化功能在这种情况下似乎没什么帮助。但是,您可以使用locale模块并将您的语言环境设置为使用您想要的千位/小数分隔符的国家/语言(在下面的示例中,巴西葡萄牙语):

import locale
locale.setlocale(locale.LC_ALL, 'pt_br.utf-8')
pd.set_option('display.float_format', lambda x: locale.format('%.2f', x, grouping=True))

示例:

In [45]: pd.Series([1111.15, 123456.78])
Out[45]:
0     1.111,15
1   123.456,78
dtype: float64

如果要忽略10000以下数字的小数(从代码看起来如此):

In [49]: pd.set_option('display.float_format', lambda x: locale.format('%.2f', x, grouping=True) if abs(x)>10000 else locale.format('%.0f', x))

In [50]: s
0         1111
1   123.456,78
dtype: float64