【问题标题】:Pandas to_csv export giving wrong values in a dataframePandas to_csv 导出在数据框中给出错误值
【发布时间】:2016-09-26 05:44:14
【问题描述】:

我正在使用 pandas 并导入了两个 csv。

df1 是

df2 是

df2的数据类型是

当我对 df1 和 df2 进行一些操作时:

df3= pd.merge(df1, df2, how='left', on=['Origin City Code', 'DC'])

然后将其导出为 csv

df3.to_csv("test.CSV")

那么“体积”列下所有值的总和与原始 df2 列下的值总和不匹配。事实上,df3 中的总和越来越多。我相信这个问题是由于浮点数而出现的。但是有什么办法可以解决吗??我已经浏览了以下链接,但我的问题仍未得到解答。

https://github.com/pydata/pandas/issues/2069

float64 with pandas to_csv

reading and writing csv in pandas changes cell values

Wrong decimal calculations with pandas

这是我正在使用的代码文件:https://www.dropbox.com/s/kjpnhl7qtojes92/sample.rar?dl=0

【问题讨论】:

  • df1 中有重复的['Origin City Code', 'DC'] 行吗?这将导致合并的 DataFrame 中出现重复卷,从而解释更大的总和。
  • @root .. df1 中没有重复值。我检查了
  • 我并不是说作为一个整体重复,只是在['Origin City Code', 'DC'] 子集上,即df.duplicated(subset=['Origin City Code', 'DC']).any()。总金额减了多少?你能提供一个可重现的例子吗?我无法使用您显示的数据重现错误。
  • 你能显示有问题的总和的值吗? df3 的总和比 df2 的总和多 多少
  • df2.shapedf3.shape 是什么?这两个数据框的行数是否相同?

标签: python-2.7 csv pandas numpy floating-point


【解决方案1】:

正如@root 上面所说,我查看了您的文件,在 df1 中,Origin City CodeDC 的组合不是唯一的。例如,有两条记录,Origin City Code = GGN 和 DC = ASA。

如果你想检查一下,你可以运行以下代码:

df1[df1.duplicated(subset=['Origin City Code', 'DC'], keep=False)].sort_values(['Origin City Code', 'DC'])

这是这个输出的开头:

【讨论】:

  • 不错的答案。不过,是 @root 谈论非唯一性,而不是我。 (尽管我同意 root 的观点,这似乎至少是问题的一部分。)
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2022-06-11
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
相关资源
最近更新 更多