Gegeben zwei Pandas-Datenrahmen (df1 und df2) mit sich überschneidenden Zeilen, besteht die Aufgabe darin, diese zu isolieren Zeilen in df1, die in fehlen df2.
Um dieses Problem zu lösen, können wir einen Links-Join von df1 nach df2 durchführen und dabei sicherstellen, dass wir Duplikate in df2 eliminieren, um sicherzustellen, dass jede Zeile von df1 mit nur einer Zeile verknüpft wird df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
Dieser Left-Join erstellt eine zusätzliche Spalte _merge, die den Ursprung jeder Spalte angibt Zeile.
Um nach Zeilen zu filtern, die ausschließlich für df1 gelten, wenden wir eine boolesche Bedingung an:
df_filtered = df_all[df_all['_merge'] == 'left_only']
Einige Lösungen überprüfen fehlerhaft jeden Wert in jeder Spalte unabhängig anstatt die zeilenweise Präsenz zu berücksichtigen. Beispielsweise gibt diese Lösung:
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
ein falsches Ergebnis zurück, da die Zeile mit den Werten [3, 10] nicht erfasst werden kann, was gemeinsam fehlt:
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
Das obige ist der detaillierte Inhalt vonWie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch fehlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!