在pandas中读写csv会改变单元格值

时间:2013-04-08 13:12:08

标签: python pandas

我刚刚开始学习大熊猫并注意到一种非常奇怪的行为,读取和编写csv文件会改变数据框的单元格值。

之前:

64437311025 SMP 1   110.00  0.00    498.00  4174.3865   4243.59 4247.69 4424.62 4570.26 3874.36 4516.41 4412.31 4117.44 4215.38 4300.00 4433.85 4065.64 4394.36 1728.00 1675.00 1517.27 1363.23 0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0   0   0   0   0   0   0   0   0   0.00    0   0.00
发出后

df = pd.read_csv(in_file, sep='\t')
df.to_csv(out_file, sep='\t')

我明白了:

1   64437311025 SMP 1   110.0   0.0 498.0   4174.3864999999996  4243.5900000000001  4247.6899999999996  4424.6199999999999  4570.2600000000002  3874.3600000000001  4516.4099999999999  4412.3100000000004  4117.4399999999996  4215.3800000000001  4300.0  4433.8500000000004  4065.6399999999999  4394.3599999999997  1728.0  1675.0  1517.27 1363.23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0   0.0 0   0.0

我对任何关于我做错的建议表示感谢。我正在使用Python(2.7.3)的标准安装和来自ubuntu 12.10存储库的大熊猫(0.8.0)

编辑: 我认为这是一个错误:https://github.com/pydata/pandas/issues/2069 感谢user1827356我找到了to_csv方法的float_format参数,但为了使它工作,我不得不安装更新版本的pandas,因为它在ubuntu 12.10中的默认0.8 pandas中不起作用。现在好了。谢谢!

2 个答案:

答案 0 :(得分:1)

您在输出csv中看到的值相同但精度更高。

答案 1 :(得分:1)

例如:

df.to_csv('pandasfile.csv', float_format='%.3f')