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

Python Pandas: หาคอลัมน์ร่วมของสอง DataFrame ด้วย intersection()

บทนำ

เมธอด intersection() ของ Pandas Index ใช้หาคอลัมน์ที่ซ้ำกันระหว่างสอง DataFrame ทำงานเหมือน & operator แต่เป็นเมธอดที่อ่านง่ายและชัดเจนกว่า

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


import pandas as pd

# DataFrame 1
df1 = pd.DataFrame({
    "Car": ['Bentley', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
})

# DataFrame 2
df2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Units_Sold": [100, 110, 150, 80, 200, 90]
})

print("DataFrame 1:")
print(df1)
print("\nDataFrame 2:")
print(df2)

# หาคอลัมน์ร่วมด้วย intersection()
common = df1.columns.intersection(df2.columns)
print(f"\nคอลัมน์ร่วม: {common.tolist()}")

ผลลัพธ์


DataFrame 1:
       Car  Cubic_Capacity  Reg_Price
0  Bentley            2000       7000
1    Lexus            1800       1500
2    Tesla            1500       5000
3  Mustang            2500       8000
4 Mercedes            2200       9000
5   Jaguar            3000       6000

DataFrame 2:
       Car  Units_Sold
0      BMW         100
1    Lexus         110
2    Tesla         150
3  Mustang          80
4 Mercedes         200
5   Jaguar          90

คอลัมน์ร่วม: ['Car']

เปรียบเทียบ: intersection() vs & operator

ด้านเปรียบเทียบintersection()& operator
ความอ่านง่ายสูง (explicit)ปานกลาง (implicit)
ความยืดหยุ่นรับ iterable อื่นได้ต้องเป็น Index/Set เท่านั้น
พารามิเตอร์เพิ่มเติมมี sort parameterไม่มี
ประสิทธิภาพเท่ากันเท่ากัน

พารามิเตอร์ sort


# เรียงลำดับผลลัพธ์
sorted_common = df1.columns.intersection(df2.columns, sort=True)
print(sorted_common)
# Index(['Car'], dtype='object')

# ไม่เรียง (ค่าเริ่มต้น False ในบางเวอร์ชัน)
unsorted = df1.columns.intersection(df2.columns, sort=False)

การดำเนินการเซตอื่นๆ ของ Index


# Union (รวม)
all_cols = df1.columns.union(df2.columns)
# Difference (df1 - df2)
only_df1 = df1.columns.difference(df2.columns)
# Symmetric Difference
sym_diff = df1.columns.symmetric_difference(df2.columns)

กรณีใช้งานจริง

  • ตรวจสอบคอลัมน์ร่วมก่อน merge() หรือ join()
  • Validate schema ระหว่าง pipeline stages
  • เลือกคอลัมน์ที่จะเก็บร่วมกันในการ concat

สรุป

df1.columns.intersection(df2.columns) เป็นวิธีที่ชัดเจนและเป็นทางการ (explicit) สำหรับหา intersection ของคอลัมน์ รองรับพารามิเตอร์ sort และทำงานกับ iterable ทั่วไป ไม่จำเป็นต้องเป็น Index