如何从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}'
答案 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