在pandas数据框中为数字格式化千位分隔符

3

我正在尝试将数据帧写入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

问题不明确,默认情况下 to_csv 使用逗号作为分隔符,因此您需要发布原始数据、重新创建 df 的代码、您尝试过的内容、从中得出的结果以及期望的结果。 - EdChum
我认为您混淆了CSV和千位分隔符。 - Paula Livingstone
1
不用说,如果你要在一个逗号分隔的值文件中添加逗号,请确保指定一个非逗号符号作为分隔符sep :) - Peter Leimbigler
2个回答

5

逗号是默认分隔符。如果你想选择自己的分隔符,可以通过声明 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)

整数类型怎么办?我找不到整数格式选项。 - rjurney

1
你想要做的与csv输出无关,而是与以下内容相关:
print('{0:,}'.format(123456789000000.546776362))

会产生

123,456,789,000,000.546776362

请参阅格式字符串语法

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接