Hoe voer je een anti-join uit in pandas?


Met een anti-join kun je alle rijen in één dataset retourneren die geen overeenkomende waarden hebben in een andere dataset.

U kunt de volgende syntaxis gebruiken om een anti-join uit te voeren tussen twee panda’s DataFrames:

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

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

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: het uitvoeren van een anti-join in Pandas

Laten we aannemen dat we de volgende twee panda-dataframes hebben:

 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

We kunnen de volgende code gebruiken om alle rijen uit het eerste DataFrame te retourneren die geen overeenkomend team hebben in het tweede 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

We kunnen zien dat er precies twee teams uit het eerste DataFrame zijn die geen overeenkomende teamnaam hebben in het tweede DataFrame.

De anti-join werkte zoals verwacht.

Het eindresultaat is een DataFrame dat alleen de rijen bevat waarin de teamnaam tot het eerste DataFrame behoort, maar niet tot het tweede DataFrame.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:

Hoe je een inner join doet in Pandas
Hoe je een left join doet in Pandas
Hoe maak je een cross-join in Panda’s?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert