更新:在撰写本文时,答案是准确的,并且默认情况下to_csv / read_csv仍无法获得浮点精度(精度与性能之间的权衡;默认情况下,性能更佳)。
目前有中float_format
可用的参数pandas.DataFrame.to_csv
和该float_precision
可供说法pandas.from_csv
。
仍然值得阅读原著,以更好地了解问题。
这是熊猫的错误,不仅在“ to_csv”函数中,而且也在“ read_csv”中。尽管浮点运算确实是一个需要程序员特别注意的主题,但这并不是一个普遍的浮点问题。下面的这篇文章澄清了这个主题:
http://docs.python.org/2/tutorial/floatingpoint.html
显示“问题”的经典单线是...
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
...不会像预期的那样显示0.3。另一方面,如果您使用定点算术处理计算,并且仅在最后一步使用浮点算术,则它将按预期工作。看到这个:
>>> (1 + 1 + 1) * 1.0 / 10
0.3
如果您迫切需要解决此问题,建议您创建另一个CSV文件,其中将所有数字都包含为整数,例如乘以100、1000或其他很方便的因子。在您的应用程序内部,照常读取CSV文件,您将获得这些整数。然后将这些值转换为浮点数,然后除以之前乘以的相同因子。