Pandalarda birleştirme önleme nasıl gerçekleştirilir?


Birleştirme önleme, bir veri kümesindeki, başka bir veri kümesinde eşleşen değerlere sahip olmayan tüm satırları döndürmenize olanak tanır.

İki panda DataFrames arasında birleştirme önleme işlemi gerçekleştirmek için aşağıdaki sözdizimini kullanabilirsiniz:

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

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

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: Pandalarda birleştirme önleme işlemi gerçekleştirme

Aşağıdaki iki panda DataFrame’e sahip olduğumuzu varsayalım:

 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

İkinci DataFrame’de eşleşen bir takım bulunmayan ilk DataFrame’deki tüm satırları döndürmek için aşağıdaki kodu kullanabiliriz:

 #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

İlk DataFrame’den, ikinci DataFrame’de eşleşen bir takım adına sahip olmayan tam olarak iki takım olduğunu görebiliriz.

Birleşme önleme beklendiği gibi çalıştı.

Sonuçta, yalnızca takım adının ilk DataFrame’e ait olduğu ancak ikinci DataFrame’e ait olmadığı satırları içeren bir DataFrame elde edilir.

Ek kaynaklar

Aşağıdaki eğitimlerde pandalarda diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

Pandalarda iç birleştirme nasıl yapılır
Pandalarda sol birleştirme nasıl yapılır
Pandalarda çapraz birleştirme nasıl yapılır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir