Heim >Backend-Entwicklung >Python-Tutorial >Wie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch fehlen?

Wie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch fehlen?

DDD
DDDOriginal
2024-12-14 08:20:15393Durchsuche

How to Identify Rows Present in One Pandas DataFrame but Absent in Another?

Identifizieren unterschiedlicher Zeilen zwischen Datenrahmen

Problemstellung

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.

Lösung

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']

Falsche Lösungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn