แนวคิด
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 จาก df1 | Left only |
'right' | ทุก key จาก df2 | Right only |
'cross' | Cartesian product | len(df1)*len(df2) |
หลาย Key Columns
pd.merge(df1, df2, on=['Car', 'Year'], how='outer')