Pandas: zeilen abrufen, die sich nicht in einem anderen dataframe befinden


Sie können die folgende grundlegende Syntax verwenden, um Zeilen aus einem Pandas-DataFrame abzurufen, die sich nicht in einem anderen DataFrame befinden:

 #merge two DataFrames and create indicator column
df_all = df1. merge ( df2.drop_duplicates (), on=[' col1 ',' col2 '],
                   how=' left ', indicator= True )

#create DataFrame with rows that exist in first DataFrame only
df1_only = df_all[df_all[' _merge '] == ' left_only ']

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

Beispiel: Abrufen von Zeilen in einem Pandas-DataFrame, die sich nicht in einem anderen DataFrame befinden

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 ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10]})

print (df2)

  team points
0 to 12
1 D 29
2 F 15
3 G 19
4:10 a.m.

Wir können die folgende Syntax verwenden, um die beiden DataFrames zusammenzuführen und eine Indikatorspalte zu erstellen, um anzugeben, welche Zeilen zu jedem DataFrame gehören:

 #merge two DataFrames and create indicator column
df_all = df1. merge ( df2.drop_duplicates (), on=[' team ',' points '],
                   how=' left ', indicator= True )

#view result
print (df_all)

Anschließend können wir die folgende Syntax verwenden, um nur die Zeilen aus dem ersten DataFrame abzurufen, die nicht im zweiten DataFrame enthalten sind:

 #create DataFrame with rows that exist in first DataFrame only
df1_only = df_all[df_all[' _merge '] == ' left_only ']

#view DataFrame
print (df1_only)

  team points _merge
1 B 15 left_only
2 C 22 left_only
4 E 24 left_only

Schließlich können wir die Spalte _merge entfernen, wenn wir möchten:

 #drop '_merge' column
df1_only = df1_only. drop (' _merge ', axis= 1 )

#view DataFrame
print (df1_only)

  team points
1 B 15
2 C 22
4 E 24

Das Ergebnis ist ein DataFrame, in dem alle Zeilen im ersten DataFrame vorhanden sind, im zweiten DataFrame jedoch nicht.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:

So fügen Sie in Pandas eine Spalte von einem DataFrame zu einem anderen hinzu
So ändern Sie die Spaltenreihenfolge in Pandas
So sortieren Sie Spalten in Pandas nach Namen

Einen Kommentar hinzufügen

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