不,你不能认为这会一直有效。在
为了实现这一点,您需要知道Pandas在写入CSV文件时写出的文本值在读回时恢复为完全相同的值(再次使用Pandas)。但默认情况下,Pandasread_csv函数牺牲了速度的准确性,因此解析操作不会自动恢复相同的浮点值。在
为了演示这一点,请尝试以下操作:我们将创建一些随机值,将它们写入CSV文件,然后读回这些值,全部使用Pandas。首先是必要的进口:>>> import pandas as pd
>>> import numpy as np
现在创建一些随机值,并将它们放入PandasSeries对象中:
^{pr2}$
现在我们使用to_csv方法将这些值写入文件,然后将该文件的内容读回DataFrame:>>> s.to_csv('test.csv', header=True)
>>> df = pd.read_csv('test.csv')
最后,让我们从df的相关列中提取值并进行比较。我们将对==操作的结果求和,以确定有多少10000输入值被准确恢复。在>>> sum(test_values == df['test_values'])
7808
因此,大约78%的数值得到了正确的恢复,其他的则没有。在
这种行为被认为是熊猫的特征,而不是臭虫。但是,有一个解决方法:Pandas 0.15向CSV读取器添加了一个新的float_precision参数。通过将float_precision&