Pandas.to_csv() 十进制参数

Posted

技术标签:

【中文标题】Pandas.to_csv() 十进制参数【英文标题】:Pandas.to_csv() decimal parameter 【发布时间】:2017-06-30 08:48:40 【问题描述】:

我不得不将大量 pandas dfs 导出到 csv 文件。 dfs 包含作为浮点数的数值 (float 64)

df.to_csv('df.csv', sep = ";", decimal = ",", encoding = "utf-8", index = False)

我学到了将十进制字符指定为参数 (decimal = ",") 而不是 "." 的艰难方法。如果您使用欧洲数据/数字,这是默认参数。这导致我将数字格式化为字符串而不是浮点数(进一步无法使用),例如:

“7.48E+17”

调试代码和找出错误花了几个小时。

为什么这么痛?如何知道数据是欧式还是美式?

【问题讨论】:

【参考方案1】:

您使用 Excel 吗? 你想解决什么问题:像“7.48E+17”这样的格式还是字符串?

如果格式问题:as,那么,据我所知,像“7.48E+17”这样的格式是 Excel 的问题(如果您使用它)。此外,Excel 对单元格的长度有限制(请看here)

我试过用浮点格式保存 csv,没关系。我使用了 quoting: 据我了解,它可以帮助您将所有非数字值转换为字符串。

df = pd.DataFrame([[12.12412412421410000,1.247518274658710000, 9.908098210849, 2.19870912870918, 1.2871287012 ],
               [12.12412412421410000,1.247518274658710000, 9.908098210849, 2.19870912870918, 1.2871287012 ]])
df.to_csv('df.csv', decimal='.', 
          header=None, index=False ,
          quoting=csv.QUOTE_NONNUMERIC, encoding='utf8')

【讨论】:

以上是关于Pandas.to_csv() 十进制参数的主要内容,如果未能解决你的问题,请参考以下文章

Pandas to_csv() 缓慢保存大型数据帧

pandas to_csv read_csv编码错误

为啥 pandas to_csv 逗号分隔不起作用?

Pandas to_csv() 检查覆盖

如何在 pandas to_csv() 中设置自定义分隔符?

如果 pandas .to_csv 包含超过 32,767 个字符,它是不是可以正确导出单元格(没有数据丢失)?