Pandas: วิธีเปรียบเทียบ dataframes สองรายการทีละแถว
คุณสามารถใช้วิธีการต่อไปนี้เพื่อเปรียบเทียบ DataFrames แพนด้าสองตัวทีละแถว:
วิธีที่ 1: เปรียบเทียบ DataFrames และเก็บเฉพาะแถวที่มีความแตกต่าง
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
วิธีที่ 2: เปรียบเทียบ DataFrames และเก็บแถวทั้งหมด
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีกับ DataFrames แพนด้าต่อไปนี้:
import pandas as pd #create first DataFrame df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'], ' points ': [18, 22, 19, 14], ' assists ': [5, 7, 7, 9]}) print (df1) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 #create second DataFrame df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'], ' points ': [18, 30, 19, 20], ' assists ': [5, 7, 7, 9]}) print (df2) team points assists 0 to 18 5 1 B 30 7 2 C 19 7 3 E 20 9
ตัวอย่างที่ 1: เปรียบเทียบ DataFrames และเก็บเฉพาะแถวที่มีความแตกต่าง
รหัสต่อไปนี้แสดงวิธีการเปรียบเทียบ DataFrames สองแถวต่อแถว และเก็บเฉพาะแถวที่มีความแตกต่างในคอลัมน์อย่างน้อยหนึ่งคอลัมน์:
#compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
#view results
print (df_diff)
team points
1 coil B 22
other B 30
3 choke D 14
other E 20
เราจะเห็นว่า DataFrames มีแถวที่แตกต่างกันสองแถว
โดยเฉพาะเราจะเห็นว่าแถวที่ตำแหน่งดัชนี 1 และ 3 ของแต่ละ DataFrame มีค่าต่างกันอย่างน้อย 1 คอลัมน์
ค่าในบรรทัด ตัวเอง จะแสดงค่าของ DataFrame แรก ในขณะที่ค่าในบรรทัด อื่น แสดงค่าของ DataFrame ที่สอง
ตัวอย่างเช่น เราเห็น:
- แถวที่ตำแหน่งดัชนี 1 ของ DataFrame แรกประกอบด้วย B ในคอลัมน์ทีมและ 22 ในคอลัมน์คะแนน
- แถวที่ตำแหน่งดัชนี 1 ของ DataFrame ที่สองประกอบด้วย B ในคอลัมน์ทีมและ 30 ในคอลัมน์คะแนน
หมายเหตุ : อาร์กิวเมนต์ Keep_equal=True บอกให้แพนด้าเก็บค่าที่เท่ากัน มิฉะนั้นค่าที่เท่ากันจะแสดงเป็น NaN
ตัวอย่างที่ 2: เปรียบเทียบ DataFrames และเก็บแถวทั้งหมด
รหัสต่อไปนี้แสดงวิธีใช้อาร์กิวเมนต์ Keep_shape=True เพื่อเปรียบเทียบ DataFrames ทั้งสองแถวต่อแถว และเก็บแถวทั้งหมดจาก DataFrames ดั้งเดิม:
#compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
#view results
print (df_diff)
team points assists
0 choke A 18 5
other A 18 5
1 coil B 22 7
other B 30 7
2 choke C 19 7
other C 19 7
3 choke D 14 9
other E 20 9
DataFrame ที่เป็นผลลัพธ์ประกอบด้วยแถวและคอลัมน์ทั้งหมดของ DataFrames ดั้งเดิม
หมายเหตุ #1 : ฟังก์ชัน เปรียบเทียบ() จะถือว่า DataFrames ทั้งสองมีขนาดเท่ากัน
หมายเหตุ #2: คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน pandas comparison() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:
นุ่น: วิธีเปรียบเทียบสองคอลัมน์
นุ่น: วิธีเปรียบเทียบสามคอลัมน์
Pandas: วิธีเปรียบเทียบคอลัมน์ใน DataFrames สองอันที่แตกต่างกัน