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

Python – รวม (Merge) DataFrame ที่มีความยาวต่างกัน

บทความนี้สาธิตวิธีรวม (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