1

I am trying to merge the following 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 

using the following command:

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

and the following error crops up:

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

In total df has 11458060 rows and df1 has 2528243 rows

I don't really know what this means. Can anyone tell me what I might be doing wrong?

1
  • If you indicate left_on = something in your merge, you also have to indicate right_on. This is only useful when the columns in your two dataframes don't have the same names. Otherwise just use on = something. Commented May 4, 2016 at 8:16

1 Answer 1

2

I think you need merge on columns x, y and z:

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

Docs.

Parameter on 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

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.