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

Python Pandas: หาคอลัมน์ร่วมระหว่างสอง DataFrame ด้วย & Operator

บทนำ

ใน Pandas สามารถใช้ตัวดำเนินการ & (bitwise AND) ระหว่าง DataFrame.columns ได้โดยตรง เพื่อหาคอลัมน์ที่ซ้ำกัน (intersection) ระหว่างสอง DataFrame เพราะ Index รองรับการดำเนินการเซต

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

import pandas as pd

# DataFrame แรก
df1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
})

# DataFrame ที่สอง
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)

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

ผลลัพธ์

DataFrame 1:
       Car  Cubic_Capacity
0      BMW            2000
1    Lexus            1800
2    Tesla            1500
3  Mustang            2500
4 Mercedes            2200
5   Jaguar            3000

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

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

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

# Union (รวมทั้งหมด)
all_columns = df1.columns | df2.columns
print(f"Union: {all_columns.tolist()}")
# ['Car', 'Cubic_Capacity', 'Units_Sold']

# Difference (อยู่ใน df1 แต่ไม่อยู่ใน df2)
diff_columns = df1.columns - df2.columns
print(f"Difference (df1 - df2): {diff_columns.tolist()}")
# ['Cubic_Capacity']

# Symmetric Difference (อยู่ในฝั่งใดฝั่งหนึ่งอย่างเดียว)
sym_diff = df1.columns ^ df2.columns
print(f"Symmetric Difference: {sym_diff.tolist()}")
# ['Cubic_Capacity', 'Units_Sold']

วิธีทางเลือก: ใช้เมธอด intersection()

# เทียบเท่ากับ & operator
common = df1.columns.intersection(df2.columns)
print(common)  # Index(['Car'], dtype='object')

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

  • ตรวจสอบ schema consistency ระหว่างไฟล์ข้อมูลหลายไฟล์
  • รวม (merge/join) DataFrame โดยอัตโนมัติบนคอลัมน์ร่วม
  • Validate ข้อมูลก่อนการประมวลผล

สรุป

การใช้ & ระหว่าง df.columns เป็นวิธีสั้นและอ่านง่ายสำหรับหา intersection ของคอลัมน์ Pandas Index รองรับ operation เซตทั้งหมด: | (union), - (difference), ^ (symmetric difference)