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 สองอันที่แตกต่างกัน

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *