ฟังก์ชัน numpy.intersect1d() หาค่าที่ซ้ำกัน (intersection) ของสองอาร์เรย์ 1D ใช้หาชื่อคอลัมน์ที่เหมือนกันระหว่างสอง DataFrame ได้อย่างรวดเร็ว
ขั้นตอนการทำงาน
1. นำเข้าไลบรารี
import pandas as pd
import numpy as np
2. สร้าง DataFrame 2 ตัว มีคอลัมน์บางส่วนซ้ำกัน
dataFrame1 = 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],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
dataFrame2 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
3. หาคอลัมน์ร่วมด้วย np.intersect1d
common_cols = np.intersect1d(dataFrame1.columns, dataFrame2.columns)
print(common_cols)
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
import numpy as np
dataFrame1 = 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],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
print("DataFrame1:\n", dataFrame1)
dataFrame2 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Units_Sold": [100, 110, 150, 80, 200, 90]
})
print("\nDataFrame2:\n", dataFrame2)
# หาคอลัมน์ร่วม
common_cols = np.intersect1d(dataFrame1.columns, dataFrame2.columns)
print("\nCommon columns:", common_cols)
ผลลัพธ์
Common columns: ['Car' 'Units_Sold']
วิธีอื่นใน Pandas (ไม่ต้อง NumPy)
# 1. Index intersection (แนะนำ ใช้ Pandas only)
common = dataFrame1.columns.intersection(dataFrame2.columns)
print(common) # Index(['Car', 'Units_Sold'], dtype='object')
# 2. Set operation
set(df1.columns) & set(df2.columns)
# 3. List comprehension
[c for c in df1.columns if c in df2.columns]
NumPy Set Operations อื่นๆ
| ฟังก์ชัน | คำอธิบาย |
|---|---|
np.intersect1d(a, b) | Intersection (ซ้ำกัน) |
np.union1d(a, b) | Union (รวมทั้งหมด ไม่ซ้ำ) |
np.setdiff1d(a, b) | Set difference (อยู่ใน a ไม่อยู่ใน b) |
np.setxor1d(a, b) | Symmetric difference (อยู่ในอันใดอันหนึ่ง แต่ไม่ใช่ทั้งคู่) |
การประยุกต์ใช้: Merge เฉพาะคอลัมน์ร่วม
common = df1.columns.intersection(df2.columns)
merged = pd.merge(df1, df2, on=common.tolist())