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

Python Pandas – Merge DataFrame พร้อม Indicator Column

ภาพรวม

ใช้ pd.merge() รวมสอง DataFrame พร้อม indicator=True เพื่อสร้างคอลัมน์ _merge แสดงที่มาของแต่ละแถว

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


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', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})

print("DataFrame1 ...\n", dataFrame1)
print("\nDataFrame2 ...\n", dataFrame2)

# Left merge with indicator
merged = pd.merge(dataFrame1, dataFrame2, how='left', on='Car', indicator=True)

print("\nMerged dataframe...\n", merged)

ผลลัพธ์

Merged dataframe...
       Car  Units  Reg_Price     _merge
0      BMW    100     7000.0      both
1    Lexus    150     1500.0      both
2     Audi    110        NaN  left_only
3  Mustang     80     8000.0      both
4  Bentley    110        NaN  left_only
5   Jaguar     90     6000.0      both

ค่าของ _merge Column

How Parameter Options

  • 'left' – เก็บทุกแถว left (default)
  • 'right' – เก็บทุกแถว right
  • 'outer' – Union (ทั้งคู่)
  • 'inner' – Intersection (เฉพาะที่มีในทั้งคู่)
  • 'cross' – Cartesian product

เปลี่ยนชื่อ Indicator Column


pd.merge(df1, df2, on='Car', how='outer', indicator='source')
# คอลัมน์จะชื่อ 'source' แทน '_merge'

ประยุกต์ใช้

  • Debug merge: หา key ที่ missing
  • Data lineage tracking
  • Full outer join แล้ว filter _merge != 'both' หา asymmetric data
Valueความหมาย
bothKey อยู่ในทั้งสอง DataFrame
left_onlyKey อยู่เฉพาะ left DataFrame
right_onlyKey อยู่เฉพาะ right DataFrame