Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Merge Pandas DataFrame ด้วย Outer Join

แนวคิด

pd.merge(df1, df2, on='key', how='outer') รวม 2 DataFrames ตาม key column เก็บแถวทั้งหมดจากทั้งสองฝั่ง ค่าที่ไม่มีคู่จะเป็น NaN

ตัวอย่างโค้ด

import pandas as pd

df1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 110, 90]
})

df2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})

print("DataFrame1:\n", df1)
print("\nDataFrame2:\n", df2)

# Outer join on 'Car'
merged = pd.merge(df1, df2, on='Car', how='outer')
print("\nMerged (Outer Join):\n", merged)

ผลลัพธ์

DataFrame1:
       Car  Units
0      BMW    100
1    Lexus    150
2     Audi    110
3  Mustang     80
4  Bentley    110
5   Jaguar     90

DataFrame2:
       Car  Reg_Price
0      BMW       7000
1    Lexus       1500
2    Tesla       5000
3  Mustang       8000
4  Mercedes      9000
5   Jaguar       6000

Merged (Outer Join):
       Car  Units  Reg_Price
0      BMW  100.0     7000.0
1    Lexus  150.0     1500.0
2     Audi  110.0        NaN
3  Mustang   80.0     8000.0
4  Bentley  110.0        NaN
5   Jaguar   90.0     6000.0
6    Tesla   NaN      5000.0
7  Mercedes  NaN      9000.0

Join Types

howคำอธิบายแถวผลลัพธ์
'inner'เฉพาะ key ที่มีในทั้งคู่ (default)Intersection
'outer'ทุก key จากทั้งคู่Union
'left'ทุก key จาก df1Left only
'right'ทุก key จาก df2Right only
'cross'Cartesian productlen(df1)*len(df2)

หลาย Key Columns

pd.merge(df1, df2, on=['Car', 'Year'], how='outer')