2016-09-23 3 views
0

Ich benutze Pandas und habe zwei csv importiert.Pandas to_csv export geben falsche Werte in einem Datenrahmen

df1 ist

enter image description here

DF2 ist

enter image description here

Der Datentyp von DF2 ist

enter image description here

Wenn ich tue, einige Manipulation auf DF1 und DF2:

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

und dann

df3.to_csv("test.CSV") 

dann die Summe aller Werte in der Spalte „Volume“ entsprechen, wird nicht der Summe der Werte unter Spalten CSV-Export von Original DF2. Tatsache ist, dass die Summe in DF3 mehr ist. Ich glaube, dass das Problem aufgrund von Gleitkommazahlen kommt. Aber gibt es einen Weg, es zu lösen? Ich habe die folgenden Links durchgesehen, aber meine Frage bleibt unbeantwortet.

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

Hier ist der Code-Dateien verwende ich: https://www.dropbox.com/s/kjpnhl7qtojes92/sample.rar?dl=0

+3

Haben Sie Wiederholung '[' Origin City Code ',' DC '] 'Zeilen in' df1'? Dies würde dazu führen, dass sich im zusammengelegten DataFrame wiederholte Volumes befinden, was die größere Summe erklärt. – root

+0

@root .. kein wiederholter Wert in DF1. Ich habe – Ajeet

+2

überprüft Ich meine nicht Wiederholungen als Ganzes, nur auf der "['Origin City Code', 'DC'] 'Teilmenge, dh' df.duplicated (Teilmenge = [' Origin City Code ',' DC ']) .any() '. Wie viel kostet die Summe? Können Sie ein reproduzierbares Beispiel geben? Ich kann den Fehler nicht mit den Daten reproduzieren, die Sie angezeigt haben. – root

Antwort

1

ich auf Ihre Dateien sah, wie @root wurde oben sagen , in df1 die Kombination Origin City Code und DC sind nicht eindeutig. Zum Beispiel gibt es zwei Datensätze mit Origin City Code = GGN und DC = ASA.

Wenn Sie wollen, dass es überprüfen, können Sie den folgenden Code ausführen:

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

Hier ist der Kopf dieser Ausgabe:

enter image description here

+0

Schöne Antwort. Es ist @root, die über Uneindeutigkeit sprach, aber nicht ich. (Obwohl ich mit root übereinstimme, dass es wahrscheinlich zumindest ein Teil des Problems ist.) –

Verwandte Themen