วิธีการต่อต้านการเข้าร่วมใน pandas


การต่อต้านการรวม ช่วยให้คุณสามารถส่งคืนแถวทั้งหมดในชุดข้อมูลเดียวที่ไม่มีค่าที่ตรงกันในชุดข้อมูลอื่น

คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำการต่อต้านการรวมระหว่าง DataFrames แพนด้าสองตัว:

 outer = df1. merge (df2, how=' outer ', indicator= True )

anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 )

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: ทำการต่อต้านการเข้าร่วมใน Pandas

สมมติว่าเรามี DataFrames แพนด้าสองตัวต่อไปนี้:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [18, 22, 19, 14, 30]})

print (df1)

  team points
0 to 18
1 B 22
2 C 19
3 D 14
4 E 30

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'F', 'G'],
                    ' points ': [18, 22, 19, 22, 29]})

print (df2)

  team points
0 to 18
1 B 22
2 C 19
3 F 22
4 G 29

เราสามารถใช้โค้ดต่อไปนี้เพื่อส่งคืนแถวทั้งหมดจาก DataFrame แรกที่ไม่มีทีมที่ตรงกันใน DataFrame ที่สอง:

 #perform outer join
outer = df1. merge (df2, how=' outer ', indicator= True )

#perform anti-join
anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 )

#view results
print (anti_join)

  team points
3 D 14
4 E 30

เราจะเห็นได้ว่ามีสองทีมจาก DataFrame แรกที่ไม่มีชื่อทีมที่ตรงกันใน DataFrame ที่สอง

การต่อต้านการรวมทำงานตามที่คาดไว้

ผลลัพธ์ที่ได้คือ DataFrame ที่มีเฉพาะแถวที่ชื่อทีมเป็นของ DataFrame แรก แต่ไม่ใช่ DataFrame ที่สอง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:

วิธีเข้าร่วมภายในใน Pandas
วิธีเข้าร่วมซ้ายใน Pandas
วิธีทำ cross join ใน Pandas

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

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