格式化pandas数据帧中数字的千位分隔符

时间:2017-11-10 16:42:49

标签: python-2.7 pandas

我正在尝试将数据帧写入csv,我希望.csv格式化为逗号。我没有在to_csv文档上看到任何方式使用格式或类似的东西。

有谁知道能够格式化输出的好方法吗?

我的csv输出如下所示:

12172083.89 1341.4078   -9568703.592    10323.7222
21661725.86 -1770.2725  12669066.38 14669.7118

我希望它看起来像这样:

12,172,083.89   1,341.4078  -9,568,703.592  10,323.7222
21,661,725.86   -1,770.2725 12,669,066.38   14,669.7118

2 个答案:

答案 0 :(得分:1)

逗号是默认分隔符。如果要选择自己的分隔符,可以通过声明pandas to_csv()方法的sep参数来实现。
df.to_csv(sep=',')

如果你的目标是创建千位分隔符并将它们导出回csv,你可以按照这个例子:

import pandas as pd
df = pd.DataFrame([[12172083.89, 1341.4078,   -9568703.592,    10323.7222],
[21661725.86, -1770.2725,  12669066.38, 14669.7118]],columns=['A','B','C','D'])
for c in df.columns:
    df[c] = df[c].apply(lambda x : '{0:,}'.format(x))
df.to_csv(sep='\t')

如果您只是希望pandas在打印时显示分隔符:

pd.options.display.float_format = '{:,}'.format
print(df)

答案 1 :(得分:0)

您要做的事情与csv输出无关,而是与以下内容有关:

print('{0:,}'.format(123456789000000.546776362))

产生

123,456,789,000,000.546776362

请参阅format string syntax

另外,您最好注意@Peter上面关于首先破坏csv结构的评论。