2016-09-23 98 views
0

我正在使用熊猫并导入了两个csv。熊猫to_csv导出在数据框中给出错误的值

DF1是

enter image description here

DF2是

enter image description here

DF2的数据类型是

enter image description here

当我在做在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

+3

你有重复的'['出发城市代码','DC']'df1'中的行?这会导致在合并的DataFrame中存在重复的卷,解释更大的总和。 – root

+0

@root ..在df1中没有重复的值。我检查了 – Ajeet

+2

我并不是说整个重复,只是在'['Origin City Code','DC']'子集,即'df.duplicated(subset = ['Origin City Code','DC']] ).ANY()'。总和是多少?你能提供一个可重复的例子吗?我无法重现您显示的数据的错误。 – root

回答

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']) 

下面是该输出的头:

enter image description here

+0

好的答案。这是@root,他谈论的是非唯一性,但不是我。 (尽管我同意根,这似乎至少是问题的一部分。) –