Jak wykonać zabezpieczenie przed połączeniem w pandach


Funkcja zapobiegająca łączeniu pozwala zwrócić wszystkie wiersze w jednym zbiorze danych, które nie mają pasujących wartości w innym zbiorze danych.

Możesz użyć następującej składni, aby wykonać zabezpieczenie przed połączeniem dwóch ramek DataFrame pand:

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

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

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: wykonanie operacji zapobiegającej łączeniu w Pandach

Załóżmy, że mamy następujące dwie ramki danych pandy:

 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

Możemy użyć poniższego kodu, aby zwrócić wszystkie wiersze z pierwszej ramki danych, które nie mają pasującego zespołu w drugiej ramce danych:

 #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

Widzimy, że istnieją dokładnie dwa zespoły z pierwszej ramki danych, które nie mają pasującej nazwy zespołu w drugiej ramce danych.

Funkcja zapobiegająca łączeniu działała zgodnie z oczekiwaniami.

Efektem końcowym jest ramka danych zawierająca tylko wiersze, w których nazwa zespołu należy do pierwszej ramki danych, ale nie do drugiej ramki danych.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Jak wykonać połączenie wewnętrzne w Pandach
Jak wykonać lewe połączenie w Pandach
Jak wykonać połączenie krzyżowe w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *