บทความนี้สาธิตวิธีรวม (Merge) สอง DataFrame ที่มีจำนวนแถวต่างกัน โดยใช้เมธอด merge() แบบ Left Join
สถานการณ์
- DataFrame1: 4 แถว (BMW, Lexus, Audi, Jaguar)
- DataFrame2: 6 แถว (BMW, Lexus, Audi, Mercedes, Jaguar, Bentley)
- ต้องการรวมโดยเก็บข้อมูล DataFrame2 ทั้งหมด (Left Join)
โค้ดตัวอย่าง
import pandas as pd
# DataFrame 1 (สั้นกว่า)
dataFrame1 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Audi', 'Jaguar']
})
print("DataFrame1:")
print(dataFrame1)
print(f"ความยาว: {len(dataFrame1)}")
# DataFrame 2 (ยาวกว่า)
dataFrame2 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley']
})
print("\nDataFrame2:")
print(dataFrame2)
print(f"ความยาว: {len(dataFrame2)}")
# Merge แบบ Left Join (เก็บ DataFrame2 ทั้งหมด)
# how='left' หมายถึงใช้ DataFrame2 เป็น Base (ซ้าย) Join กับ DataFrame1 (ขวา)
mergedRes = dataFrame2.merge(dataFrame1, how='left')
print("\nDataFrame หลัง Merge (Left Join):")
print(mergedRes)
ผลลัพธ์
DataFrame1:
Car
0 BMW
1 Lexus
2 Audi
3 Jaguar
DataFrame2:
Car
0 BMW
1 Lexus
2 Audi
3 Mercedes
4 Jaguar
5 Bentley
DataFrame หลัง Merge (Left Join):
Car
0 BMW
1 Lexus
2 Audi
3 Mercedes
4 Jaguar
5 Bentley
อธิบาย Join Types
| how | คำอธิบาย | จำนวนแถวผลลัพธ์ |
|---|---|---|
'left' | เก็บ Left ทั้งหมด + Match จาก Right | เท่ากับ Left |
'right' | เก็บ Right ทั้งหมด + Match จาก Left | เท่ากับ Right |
'inner' | เก็บเฉพาะที่ Match ทั้งคู่ | น้อยที่สุด |
'outer' | เก็บทั้งหมด (Union) | มากที่สุด |
การระบุ Key Column
# ถ้าคอลัมน์ชื่อต่างกัน ใช้ left_on, right_on
merged = df2.merge(df1, how='left', left_on='Car_Name', right_on='Vehicle')
# ถ้ามีหลายคอลัมน์เป็น Key
merged = df2.merge(df1, how='left', on=['Car', 'Year'])
หมายเหตุ
ตัวอย่างนี้ Merge เฉพาะคอลัมน์ Car (Key เดียวกัน) ทำให้ผลลัพธ์เหมือน DataFrame2 เพราะไม่มีคอลัมน์เพิ่มเติมจาก DataFrame1 ที่นำมา join