Heim >Backend-Entwicklung >Python-Tutorial >Wie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch nicht?
Bei der Arbeit mit mehreren Datenrahmen ist es notwendig, Zeilen zu identifizieren, die in einem, aber nicht im anderen vorhanden sind. Angenommen, wir haben zwei Datenrahmen, df1 und df2, wobei df2 eine Teilmenge von df1 ist.
Wie können wir die Zeilen aus df1 extrahieren, die in df2 nicht vorhanden sind?
Betrachten Sie das folgende Beispiel:
import pandas as pd df1 = pd.DataFrame(data={'col1': [1, 2, 3, 4, 5, 3], 'col2': [10, 11, 12, 13, 14, 10]}) df2 = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [10, 11, 12]}) print("df1:") print(df1) print("\ndf2:") print(df2)
Ausgabe:
col1 col2 0 1 10 1 2 11 2 3 12 3 4 13 4 5 14 5 3 10 col1 col2 0 1 10 1 2 11 2 3 12
Unser Ziel ist es, die Zeilen in df1 zu finden, die in nicht vorhanden sind df2.
Lösung:
Um die ungewöhnlichen Zeilen genau zu identifizieren, müssen wir eine Linksverknüpfung zwischen df1 und df2 für die Spalten col1 und col2 durchführen, um sicherzustellen, dass Duplikate entstehen in df2 werden eliminiert. Zusätzlich geben wir Indicator=True an, um eine zusätzliche Spalte zu erstellen, die die Quelle jeder zusammengeführten Zeile angibt.
Der resultierende Datenrahmen, df_all, enthält alle Zeilen von df1 und df2 mit einer zusätzlichen Spalte _merge, die angibt, ob a Zeile stammt aus beiden Datenrahmen (both), nur df1 (left_only) oder nur df2 (right_only).
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
Wir können jetzt Filtern Sie df_all, um die ungewöhnlichen Zeilen aus df1 mithilfe der booleschen Bedingung df_all['_merge'] == 'left_only' zu extrahieren.
df_uncommon = df_all[df_all['_merge'] == 'left_only'] print("\nUncommon rows in df1:") print(df_uncommon)
Dies gibt die gewünschte Ausgabe zurück:
col1 col2 _merge 3 4 13 left_only 4 5 14 left_only 5 3 10 left_only
Durch die Nutzung des linken Joins mit Duplikateliminierung und der Spalte „_merge“ können wir die Zeilen aus df1, die in nicht vorhanden sind, effektiv identifizieren und extrahieren df2.
Das obige ist der detaillierte Inhalt vonWie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!