2017-09-01 1 views
0

Ich versuche, Daten zu einem DF zu verbinden oder beizutreten, während ich meine Konten durchlaufe.Pandas verschmelzen/verbinden Daten zu einem Datenrahmen während der Schleife

Zuerst stelle ich einen leeren Datenrahmen von allen Monaten indiziert bis:

Empty DataFrame 
Columns: [] 
Index: [2014-09-30, 2014-09-30, 2014-10-31, 2014-10-31, 2014-11-30, 2014-11-30, 2014-12-31, 2015-01-31, 2015-02-28, 2015-03-31] 

Next I Schleife Trog alle Konten, die Werte zu den Datenrahmen hinzuzufügen.

for a in accts: 

     cf = Cashflow.objects.all().filter (id = a.id).order_by ('month').values ('month', 'value') 

     df2 = read_frame (cf) 
     df2 = df2.set_index ('month') 

     df = pd.merge (df2, how = 'left', left_index = True, right_index = True) 

Aber ich bin immer doppelte Daten in meiner Ausgabe:

month       
2014-09-30 535400 122928.0 
2014-09-30 535400 122928.0 
2014-10-31 530719 107389.0 
2014-10-31 530719 107389.0 
2014-11-30 512009 97654.0 
2014-11-30 512009 97654.0 
2014-12-31 482277  0.0 
2015-01-31 474815  0.0 

Ich habe verschiedene Lösungen ausprobiert.

Ich kann doppelte Zeilen löschen, aber das ist nur ein Patch auf schlechten Code.

Ist dies die beste Methode? Sollte es ein Join und kein Merge sein?

Antwort

1

Sie haben doppelte Daten im Index, den Sie für die leere Datenbank erstellt haben, mit der Sie begonnen haben. Warum?

+0

fallen lassen Ich habe die doppelten Daten nicht gesehen. Ah ... – diogenes

+0

.distinct() löste das Problem. Vielen Dank! – diogenes

1

Sie haben Duplikate in Ihren Indizes.

Sie können sie durch df.drop_duplicates()

Verwandte Themen