Python: Merge DataFrames Pandas Outer Join Example


In Python pandas, we can perform an outer join between two DataFrames using the pandas.merge() function and by setting the parameter how as outer.

Let's take a look by an example.


Example: Pandas Outer Join

import pandas as pd

data_city_NYC = {
    'Temp_NYC': [25, 30, 27],
    'Humidity_NYC': [50, 45, 55]
}

data_city_Chicago = {
    'Temp_Chicago': [28, 32, 29],
    'Humidity_Chicago': [60, 58, 62]
}

dates_NYC = pd.date_range(start='2023-07-01', periods=3, freq='D')
dates_Chicago = pd.date_range(start='2023-07-04', periods=3, freq='D')

df_city_NYC = pd.DataFrame(data_city_NYC, index=dates_NYC)
df_city_Chicago = pd.DataFrame(data_city_Chicago, index=dates_Chicago)

print("DataFrame: NYC City")
print(df_city_NYC)
print("\nDataFrame: Chicago City")
print(df_city_Chicago)

# Outer join on the index (date)
outer_merged_cities_df = pd.merge(df_city_NYC, df_city_Chicago, left_index=True, right_index=True, how='outer')

print("\nOuter Joined DataFrame Data:")
print(outer_merged_cities_df)
Output:
DataFrame: NYC City
            Temp_NYC  Humidity_NYC
2023-07-01        25            50
2023-07-02        30            45
2023-07-03        27            55

DataFrame: Chicago City
            Temp_Chicago  Humidity_Chicago
2023-07-04            28                60
2023-07-05            32                58
2023-07-06            29                62

Outer Joined DataFrame Data:
            Temp_NYC  Humidity_NYC  Temp_Chicago  Humidity_Chicago
2023-07-01      25.0          50.0           NaN               NaN
2023-07-02      30.0          45.0           NaN               NaN
2023-07-03      27.0          55.0           NaN               NaN
2023-07-04       NaN           NaN          28.0              60.0
2023-07-05       NaN           NaN          32.0              58.0
2023-07-06       NaN           NaN          29.0              62.0
Pandas Outer Join Example

The outer join is a union of keys from both data frames, this is similar to a SQL full outer join, note the keys are sorted lexicographically.

-

Facing issues? Have Questions? Post them here! I am happy to answer!


Author Info:

Rakesh (He/Him) is a seasoned developer with over 10 years of experience in web and app development, and a deep knowledge of operating systems. Author of insightful How-To articles for Code2care.

Follow him on: X

You can also reach out to him via e-mail: rakesh@code2care.org

Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap