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

หาความต่างระหว่าง DataFrame สองตัวใน Pandas

แนวคิด

การหาความต่างระหว่าง DataFrame สองตัว สามารถทำได้หลายวิธี ขึ้นอยู่กับความต้องการ:

  • equals(): ตรวจสอบว่าเหมือนกันทุกประการ (True/False)
  • compare() (Pandas 1.1+): แสดงความต่างรายเซลล์แบบละเอียด
  • Boolean indexing: กรองแถวที่ต่างกัน

ตัวอย่าง: ใช้ equals() ตรวจสอบความเท่ากัน

import pandas as pd

df1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 110, 90]
})

df2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 110, 90]
})

print("DataFrame1:\n", df1)
print("\nDataFrame2:\n", df2)

# ตรวจสอบคอลัมน์ Units
print(f"\nคอลัมน์ Units เหมือนกัน? {df1['Units'].equals(df2['Units'])}")

# ตรวจสอบ DataFrame ทั้งหมด
print(f"DataFrame ทั้งสองเท่ากัน? {df1.equals(df2)}")

ผลลัพธ์

DataFrame1:
       Car  Units
0      BMW    100
1    Lexus    150
2     Audi    110
3  Mustang     80
4  Bentley    110
5   Jaguar     90

DataFrame2:
       Car  Units
0      BMW    100
1    Lexus    150
2     Audi    110
3  Mustang     80
4  Bentley    110
5   Jaguar     90

คอลัมน์ Units เหมือนกัน? True
DataFrame ทั้งสองเท่ากัน? True

ใช้ compare() สำหรับรายละเอียดความต่าง (Pandas ≥ 1.1)

# สร้าง DataFrame ที่มีความต่างบางส่วน
df3 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 999, 90]  # แถวที่ 4 ต่างกัน
})

diff = df1.compare(df3)
print("\nความต่างระหว่าง df1 และ df3:\n", diff)

ผลลัพธ์ compare()

ความต่างระหว่าง df1 และ df3:
   Units      
  self other
4  110   999

สรุป

  • ใช้ equals() สำหรับตรวจสอบ True/Weakly
  • ใช้ compare() สำหรับดูรายละเอียดเซลล์ที่ต่างกัน
  • ใช้ df1 != df2 สำหรับ Boolean mask แบบ element-wise