So führen sie einen anti-join in pandas durch


Mit einem Anti-Join können Sie alle Zeilen in einem Datensatz zurückgeben, die in einem anderen Datensatz keine übereinstimmenden Werte haben.

Sie können die folgende Syntax verwenden, um einen Anti-Join zwischen zwei Pandas-DataFrames durchzuführen:

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

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

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Durchführen eines Anti-Joins in Pandas

Nehmen wir an, wir haben die folgenden zwei Panda-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

Wir können den folgenden Code verwenden, um alle Zeilen aus dem ersten DataFrame zurückzugeben, die im zweiten DataFrame kein passendes Team haben:

 #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

Wir können sehen, dass es genau zwei Teams aus dem ersten DataFrame gibt, die im zweiten DataFrame keinen passenden Teamnamen haben.

Der Anti-Join funktionierte wie erwartet.

Das Endergebnis ist ein DataFrame, der nur die Zeilen enthält, in denen der Teamname zum ersten DataFrame gehört, nicht jedoch zum zweiten DataFrame.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere häufige Aufgaben in Pandas ausgeführt werden:

So führen Sie einen Inner Join in Pandas durch
So führen Sie einen Links-Join in Pandas durch
So führen Sie einen Cross-Join in Pandas durch

Einen Kommentar hinzufügen

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