Eindeutige Zeilen in Pandas-Datenrahmen erhalten
Bei zwei Pandas-Datenrahmen ist es häufig erforderlich, Zeilen zu identifizieren, die nur in einem von ihnen vorhanden sind. Dies kann effektiv durch die Verwendung einer Zusammenführungsoperation erreicht werden.
Betrachten Sie beispielsweise die folgenden Datenrahmen:
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]})
Um Zeilen aus df1 zu erhalten, die in df2 nicht vorhanden sind, können wir Folgendes ausführen: Linksverknüpfung zwischen df1 und df2. Um sicherzustellen, dass jede Zeile in df1 mit genau einer Zeile in df2 übereinstimmt, müssen wir zunächst doppelte Zeilen aus df2 entfernen. Wir können dies tun, indem wir die Funktion drop_duplicates() verwenden.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
Der resultierende df_all-Datenrahmen verfügt über eine zusätzliche Spalte mit dem Namen _merge, die angibt, ob jede Zeile sowohl von df1 als auch von df2 („beide“) stammt Nur df1 ('left_only') oder nur aus df2 ('right_only').
col1 col2 _merge 0 1 10 both 1 2 11 both 2 3 12 both 3 4 13 left_only 4 5 14 left_only 5 3 10 left_only
Zum Extrahieren der Zeilen aus df1, die in df2 nicht vorhanden sind, können wir einfach die Zeilen auswählen, in denen _merge gleich „left_only“ ist:
rows_not_in_df2 = df_all[df_all['_merge'] == 'left_only']
col1 col2 0 4 13 1 5 14 2 3 10
Vermeidung falscher Ansätze
Es ist wichtig, falsche Lösungen zu vermeiden, die die Zeilen nicht als Ganzes betrachten. Einige Lösungen prüfen nur, ob jeder einzelne Wert in einer Zeile im anderen Datenrahmen vorhanden ist, was zu falschen Ergebnissen führen kann.
Zum Beispiel, wenn wir df1 eine weitere Zeile mit den Daten [3, 10] hinzugefügt hätten, was auch in df2 vorhanden ist, würden die falschen Ansätze es immer noch als nicht vorhanden in df2 identifizieren, da es in den beiden Spalten unterschiedliche Werte hat. Unser Ansatz erkennt es jedoch korrekt als nicht vorhanden, da es bereits in df2 mit den gleichen Werten für beide Spalten vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie kann man eindeutige Zeilen in Pandas-DataFrames beim Vergleich zweier DataFrames effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!