Skip to content Skip to sidebar Skip to footer

Merge Dataframes Based On Index Columns

I can see that what I'm trying to do is possible via concat: Merge dataframes on index Why can I not do something equivalent using merge? import pandas as pd df = pd.DataFrame({'n

Solution 1:

This is possible; just use left_index=True instead of left_on, and right_index=True instead of right_on:

>>>pd.merge(df, df2, left_index=True, right_index=True)
   age_x         name_x  age_y name_y
0     73   joe strummer     17  nancy
1     80  johnny rotten     19    sid

Using left_on doesn't work because indexes are separate objects to DataFrame columns. An index can have name, even an identical name to one of your columns, but left_on won't see it because it only looks at column names.

The documentation for merge gives the following guidance for these arguments:

left_index : boolean, default False

Use the index from the left DataFrame as the join key(s). If it is a MultiIndex, the number of keys in the other DataFrame (either the index or a number of columns) must match the number of levels

Post a Comment for "Merge Dataframes Based On Index Columns"