บทนำ
ใน 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)