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

Python Pandas - Merge DataFrame ด้วยคอลัมน์ร่วม (Common Column)

ฟังก์ชัน pd.merge() ใช้รวมสอง DataFrame ตามคอลัมน์ร่วม (Common Column / Key) โดยระบุพารามิเตอร์ on='column_name' เป็น Inner Join (default) เก็บเฉพาะแถวที่มี key ตรงกันในทั้งสองฝั่ง

ขั้นตอนการทำงาน

1. สร้าง DataFrame 2 ตัว มีคอลัมน์ Car ร่วมกัน

import pandas as pd

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

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

2. Merge ตามคอลัมน์ Car

mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car')
print(mergedRes)

โค้ดตัวอย่างสมบูรณ์

import pandas as pd

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

dataFrame2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})
print("\nDataFrame2:\n", dataFrame2)

# Merge ตามคอลัมน์ Car
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car')
print("\nMerged data frame (common column):\n", mergedRes)

ผลลัพธ์

Merged data frame (common column):
      Car  Units  Reg_Price
0     BMW    100       7000
1   Lexus    150       1500
2    Audi    110       5000
3  Mustang     80       8000
4   Jaguar     90       6000

คำอธิบาย

  • Inner Join (default): มีแถวที่ Car ตรงกันในทั้งสองฝั่ง 5 คู่ (BMW, Lexus, Audi, Mustang, Jaguar)
  • Bentley (อยู่ df1 ไม่อยู่ df2) และ Mercedes (อยู่ df2 ไม่อยู่ df1) ถูกลบออก
  • คอลัมน์ Car ไม่ซ้ำในทั้งสอง → One-to-One relationship

พารามิเตอร์ merge สำคัญ

พารามิเตอร์คำอธิบาย
onชื่อคอลัมน์ร่วม (ต้องมีในทั้งสอง)
left_on, right_onชื่อคอลัมน์ต่างกันในแต่ละฝั่ง
left_index, right_indexTrue = ใช้ index แทนคอลัมน์
how'inner', 'left', 'right', 'outer', 'cross'
suffixes('_x', '_y') คำนำหน้าคอลัมน์ซ้ำ
indicatorTrue = เพิ่มคอลัมน์ _merge แสดงที่มา
validate'1:1', '1:m', 'm:1', 'm:m' ตรวจสอบความสัมพันธ์

ตัวอย่างเพิ่มเติม

# Left Join (เก็บ df1 ทั้งหมด)
pd.merge(df1, df2, on='Car', how='left')

# Outer Join (เก็บทั้งคู่)
pd.merge(df1, df2, on='Car', how='outer')

# ชื่อคอลัมน์ต่างกัน
pd.merge(df1, df2, left_on='Car', right_on='Vehicle')

# เพิ่ม indicator
pd.merge(df1, df2, on='Car', indicator=True)
# _merge column: 'both', 'left_only', 'right_only'