แนวคิด
การหาความต่างระหว่าง 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