Pandas: Joining on index

Pandas Joining and merging DataFrame: Exercise-13 with Solution

Write a Pandas program to combine the columns of two potentially differently-indexed DataFrames into a single result DataFrame.

Test Data:

     A   B
K0  A0  B0
K1  A1  B1
K2  A2  B2
     C   D
K0  C0  D0
K2  C2  D2
K3  C3  D3

Sample Solution:

Python Code :

import pandas as pd
data1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                      'B': ['B0', 'B1', 'B2']},
                     index=['K0', 'K1', 'K2'])

data2 = pd.DataFrame({'C': ['C0', 'C2', 'C3'],
                      'D': ['D0', 'D2', 'D3']},
                     index=['K0', 'K2', 'K3'])
print("Original DataFrames:")
print("\nMerged Data (Joining on index):")
result = data1.join(data2)

Sample Output:

Original DataFrames:
     A   B
K0  A0  B0
K1  A1  B1
K2  A2  B2
     C   D
K0  C0  D0
K2  C2  D2
K3  C3  D3

Merged Data (Joining on index):
     A   B    C    D
K0  A0  B0   C0   D0
K1  A1  B1  NaN  NaN
K2  A2  B2   C2   D2

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Pandas program to create a combination from two dataframes where a column id combination appears more than once in both dataframes.
Next: Write a Pandas program to merge two given dataframes with different columns.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz

Python: Tips of the Day

How to sort a Python dict by value


x1 = {'a': 5, 'b': 7, 'c': 9, 'd': 1}

sorted(x1.items(), key=lambda x: x[1])
[('d', 1), ('c', 9), ('b', 7), ('a', 5)]

# Or:

import operator
print(sorted(x1.items(), key=operator.itemgetter(1)))


[('d', 1), ('a', 5), ('b', 7), ('c', 9)]