2016-05-04 6 views
1

Новое для панд, пожалуйста, пожалуйста, со мной. Я пытаюсь объединить следующие 2 кадра данных.Pandas: слияние 2 dataframes

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 

с помощью следующей команды:

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

и следующее сообщение об ошибке всплывает:

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

Всего df имеет 11458060 строк, а df1 имеет 2528243 строки

Я действительно не знаю, что это значит. Может ли кто-нибудь сказать мне, что я могу делать неправильно?

+0

Если вы указываете left_on = что-то в слиянии, вы также должны указать right_on. Это полезно только тогда, когда столбцы двух ваших данных не имеют одинаковых имен. В противном случае просто используйте on = something. – ysearka

ответ

2

Я думаю, что вам нужно merge на колонках x, y и z:

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

Docs.

Параметр на в 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

Спасибо большое! Это сработало! – user324

+1

Если бы мой ответ был полезным, не забудьте [принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) его. Благодарю. – jezrael

Смежные вопросы