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

Python - หาคอลัมน์ร่วม (Shared Columns) ระหว่างสอง DataFrame ด้วย NumPy intersect1d

ฟังก์ชัน 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())