Cara melakukan anti-gabung di pandas


Anti-gabung memungkinkan Anda mengembalikan semua baris dalam satu kumpulan data yang tidak memiliki nilai yang cocok di kumpulan data lain.

Anda dapat menggunakan sintaks berikut untuk melakukan anti-gabungan antara dua panda DataFrames:

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

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

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: melakukan anti-join di Pandas

Mari kita asumsikan kita memiliki dua panda DataFrames berikut:

 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

Kita dapat menggunakan kode berikut untuk mengembalikan semua baris dari DataFrame pertama yang tidak memiliki tim yang cocok di DataFrame kedua:

 #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

Kita dapat melihat bahwa ada dua tim dari DataFrame pertama yang tidak memiliki nama tim yang cocok di DataFrame kedua.

Anti-gabung berfungsi seperti yang diharapkan.

Hasil akhirnya adalah DataFrame yang hanya berisi baris di mana nama tim termasuk dalam DataFrame pertama tetapi bukan DataFrame kedua.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:

Bagaimana cara melakukan inner join di Pandas
Bagaimana cara melakukan gabung kiri di Pandas
Bagaimana cara melakukan cross join di Pandas

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *