2016-05-04 19 views
1

Neu bei Pandas also bitte mit mir blank. Ich versuche die folgenden 2 Datenrahmen zusammenzuführen.Pandas: 2 Datenrahmen verschmelzen

df.head():

 x  y  z w 
0 0.0056 11 824 51 
1 0.0056 138 546 16 
2 0.0056 328 1264 40 
3 0.0056 1212 553 91 
4 0.0056 1839 388 48 

df1.head():

  x  y  z 
0 5539.0567 12243 27 
1 5873.2923 14474 1540 
2 3975.9776 11353 699 
3 1508.5975 8250 628 
4 66.7913 11812 538 

mit dem folgenden Befehl:

df1 = df1.merge(df, how='left',left_on=(['x','y','z']),right_index=True) 

und der folgende Fehler auftaucht:

ValueError: len(left_on) must equal the number of levels in the index of "right"

Insgesamt hat df 11458060 Zeilen und df1 hat 2528243 Zeilen

Ich weiß nicht wirklich, was das bedeutet. Kann mir jemand sagen, was ich falsch machen könnte?

+0

Wenn Sie left_on = etwas in Ihrem merge indicate, müssen Sie auch right_on anzuzeigen. Dies ist nur nützlich, wenn die Spalten in Ihren beiden Datenfeldern nicht die gleichen Namen haben. Ansonsten benutze einfach = etwas. – ysearka

Antwort

2

Ich glaube, Sie brauchen merge auf Spalten x, y und z:

print df1.merge(df, how='left', on=['x','y','z']) 

Docs.

Parameter auf in merge:

on: Columns (names) to join on. Must be found in both the left and right DataFrame objects. If not passed and left_index and right_index are False, the intersection of the columns in the DataFrames will be inferred to be the join keys

+0

Vielen Dank! Das hat funktioniert! – user324

+1

Wenn meine Antwort hilfreich war, bitte [accept] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) nicht vergessen. Vielen Dank. – jezrael