Pandas: überprüfen sie, ob eine zeile aus einem dataframe in einem anderen vorhanden ist


Mit der folgenden Syntax können Sie einem Pandas-DataFrame eine neue Spalte hinzufügen, die angibt, ob jede Zeile in einem anderen DataFrame vorhanden ist:

 #merge two DataFrames on specific columns
all_df = pd. merge (df1, df2, on=[' column1 ', ' column2 '], how=' left ', indicator=' exists ')

#drop unwanted columns
all_df = all_df. drop (' column3 ', axis= 1 )

#add column that shows if each row in one DataFrame exists in another
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

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

Beispiel: Überprüfen Sie, ob eine Zeile in einem Pandas DataFrame in einem anderen vorhanden ist

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],
                    ' assists ': [4, 7, 7, 10, 12]})

print (df2)

  team points assists
0 to 12 4
1 D 29 7
2 F 15 7
3 G 19 10
4:10:12

Wir können die folgende Syntax verwenden, um dem ersten DataFrame eine Spalte namens „exists“ hinzuzufügen, die angibt, ob jeder Wert in der Team- und Punktespalte in jeder Zeile im zweiten DataFrame vorhanden ist:

 import numpy as np

#merge two dataFrames and add indicator column
all_df = pd. merge (df1, df2, on=[' team ', ' points '], how=' left ', indicator=' exists ')

#drop assists columns
all_df = all_df. drop (' assists ', axis= 1 )

#add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

#view updated DataFrame
print (all_df)

  team points exists
0 A 12 True
1 B 15 False
2 C 22 False
3 D 29 True
4 E 24 False

Die neue Spalte „existiert“ gibt an, ob jeder Wert in der Team- und Punktespalte in jeder Zeile im zweiten DataFrame vorhanden ist.

Aus dem Ergebnis können wir sehen:

  • Im zweiten DataFrame existiert ein Teamwert von A und ein Punktewert von 12 .
  • Ein Teamwert von B und ein Punktewert von 15 sind im zweiten DataFrame nicht vorhanden.
  • Ein Teamwert von C und ein Punktewert von 22 sind im zweiten DataFrame nicht vorhanden.
  • Im zweiten DataFrame existiert ein Teamwert von D und ein Punktewert von 29 .
  • Ein Teamwert von E und ein Punktewert von 24 sind im zweiten DataFrame nicht vorhanden.

Beachten Sie außerdem, dass Sie in der Spalte „ existiert “ andere Werte als „True“ und „False“ angeben können, indem Sie die Werte in der Funktion „NumPy Where()“ ändern.

Sie können beispielsweise stattdessen „existiert“ und „existiert nicht“ wie folgt verwenden:

 #add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', ' exists ', ' not exists ')

#view updated DataFrame
print (all_df)

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

Beachten Sie, dass die Werte in der vorhandenen Spalte geändert wurden.

Zusätzliche Ressourcen

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

Pandas: Fügen Sie eine Spalte von einem DataFrame zu einem anderen hinzu
Pandas: Zeilen abrufen, die sich nicht in einem anderen DataFrame befinden
Pandas: So überprüfen Sie, ob mehrere Spalten gleich sind

Einen Kommentar hinzufügen

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