Pandas: LEFT OUTER JOIN, Use keys from left dataframe only
Write a Pandas program to join (left join) the two dataframes using keys from left dataframe only.
Test Data:
data1: key1 key2 P Q 0 K0 K0 P0 Q0 1 K0 K1 P1 Q1 2 K1 K0 P2 Q2 3 K2 K1 P3 Q3
data2: key1 key2 R S 0 K0 K0 R0 S0 1 K1 K0 R1 S1 2 K1 K0 R2 S2 3 K2 K0 R3 S3
Sample Solution:
Python Code :
import pandas as pd
data1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'P': ['P0', 'P1', 'P2', 'P3'],
'Q': ['Q0', 'Q1', 'Q2', 'Q3']})
data2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'R': ['R0', 'R1', 'R2', 'R3'],
'S': ['S0', 'S1', 'S2', 'S3']})
print("Original DataFrames:")
print(data1)
print("--------------------")
print(data2)
print("\nMerged Data (keys from data1):")
merged_data = pd.merge(data1, data2, how='left', on=['key1', 'key2'])
print(merged_data)
print("\nMerged Data (keys from data2):")
merged_data = pd.merge(data2, data1, how='left', on=['key1', 'key2'])
print(merged_data)
Sample Output:
Original DataFrames: key1 key2 P Q 0 K0 K0 P0 Q0 1 K0 K1 P1 Q1 2 K1 K0 P2 Q2 3 K2 K1 P3 Q3 -------------------- key1 key2 R S 0 K0 K0 R0 S0 1 K1 K0 R1 S1 2 K1 K0 R2 S2 3 K2 K0 R3 S3 Merged Data (keys from data1): key1 key2 P Q R S 0 K0 K0 P0 Q0 R0 S0 1 K0 K1 P1 Q1 NaN NaN 2 K1 K0 P2 Q2 R1 S1 3 K1 K0 P2 Q2 R2 S2 4 K2 K1 P3 Q3 NaN NaN Merged Data (keys from data2): key1 key2 R S P Q 0 K0 K0 R0 S0 P0 Q0 1 K1 K0 R1 S1 P2 Q2 2 K1 K0 R2 S2 P2 Q2 3 K2 K0 R3 S3 NaN NaN
Python Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Write a Pandas program to join the two dataframes with matching records from both sides where available.
Next: Write a Pandas program to join (left join) two dataframes using keys from right dataframe only.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics