python - Pandas to_csv 如何用逗号格式化 int 和 float 变量作为千位分隔符

标签 python pandas csv number-formatting

我处理的所有数据都需要用逗号作为千位分隔符来报告。在将数据写入 .csv 文件后,我只对以逗号作为千位分隔符的值感兴趣。在我的 pandas 数据框内部,我想将它们保留为 int 或 float。

float

我可以将 float 输出为零小数:

 df.to_csv('c:\Awesome\Groovy.csv', float_format = '%.0f')

但每当我尝试在 float 中添加逗号时,它都不起作用。

 df.to_csv('c:\Awesome\Groovy.csv', float_format = ':,.0f') ## WRONG
 df.to_csv('c:\Awesome\Groovy.csv', float_format = {:,.0f}'.format) ## WRONG

整数

我对整数的计划是,首先将它们转换为数据帧中的 float ,然后使用 .to_csv 函数对它们进行格式化。有什么想法吗?

最佳答案

这对您来说可能太笨拙了。无论如何,这里是。使用此答案 https://stackoverflow.com/a/4205875/42346我们可以使用逗号:

def thous(x, sep=',', dot='.'):
    num, _, frac = str(x).partition(dot)
    num = re.sub(r'(\d{3})(?=\d)', r'\1'+sep, num[::-1])[::-1]
    if frac:
        num += dot + frac
    return num

df['my_column'] = df['my_column'].apply(lambda x: thous(x))

使用我从另一个 SO 问题中得到的一些示例数据:

>>> df = pd.DataFrame({'date':['2017-03-10','2017-03-11','2017-03-12'],
                       'activate_time':['2017-03-10 12:13:30','2017-03-11 13:57:49','2017-03-12 14:28:05'],
                       'mycol':[1234.56789,9876.54321,1111111.11111]})
>>> df['mycol'] = df['mycol'].apply(lambda x: thous(x))
>>> df
          activate_time        date            mycol
0   2017-03-10 12:13:30  2017-03-10      1,234.56789
1   2017-03-11 13:57:49  2017-03-11      9,876.54321
2   2017-03-12 14:28:05  2017-03-12  1,111,111.11111

关于python - Pandas to_csv 如何用逗号格式化 int 和 float 变量作为千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43077725/

相关文章:

python - 随机化 DataFrame 列中的值

python - 使用 pandas 从 Python 中的一个 csv 文件中读取一系列行

python - 重新索引堆叠的 DataFrame

csv - 当Jmeter的响应数据是XML格式时,在输出的CSV文件中我们生成的内容是不可读的形式。如何克服它

sql - 无法从 csv 文件中选择列

python - 如何从二进制字段查找文件 mimetype

Python JSON 模块不会为无效的 JSON 抛出异常

python - 如何获取 subprocess.run 启动的进程的 pid 并杀死它

arrays - 使用 R 将多个文件加载到矩阵中

python - 如果出现在 python 中,如何从列值中删除额外的小数