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.

Reference Documentation:

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html

Comments & Discussion

Facing issues? Have questions? Post them here! We're happy to help!