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

For-else construct useful when searched for something and find it:

# For example assume that I need to search through a list and process each item until a flag item is found and 
# then stop processing. If the flag item is missing then an exception needs to be raised.

for i in mylist:
    if i == theflag:
    raise ValueError("List argument missing terminal flag.")