Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Unterschiede zwischen zwei Pandas-DataFrames effizient finden?

Wie kann ich die Unterschiede zwischen zwei Pandas-DataFrames effizient finden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-25 20:21:12582Durchsuche

How Can I Efficiently Find the Differences Between Two Pandas DataFrames?

Unterschiede zwischen zwei Datenrahmen finden

Bei der Arbeit mit Pandas-Datenrahmen kommt es häufig zu Situationen, in denen Sie zwei Datenrahmen vergleichen müssen und extrahieren Sie die Unterschiede zwischen ihnen. Beispielsweise verfügen Sie möglicherweise über einen Basisdatenrahmen (df1) und einen Teildatenrahmen (df2) und möchten einen neuen Datenrahmen (df3) erstellen, der alle Zeilen und Spalten in df1 enthält, die in df2 nicht vorhanden sind.

Verwenden von drop_duplicates

Die direkteste Methode, dies zu erreichen, ist die Verwendung von drop_duplicates-Funktion. Durch die Verkettung von df1 und df2 und die anschließende Anwendung von drop_duplicates auf den verketteten Datenrahmen können Sie doppelte Zeilen entfernen und einen Datenrahmen erhalten, der nur eindeutige Zeilen enthält.

pd.concat([df1, df2]).drop_duplicates(keep=False)

Umgang mit Duplikaten

Wenn jedoch entweder df1 oder df2 selbst doppelte Zeilen enthält, gilt der drop_duplicates-Ansatz kann zu einer fehlerhaften Ausgabe führen. Um dies zu beheben, können Sie alternative Methoden verwenden, die ursprüngliche Duplikate beibehalten:

Methode 1: Verwendung von isin mit Tupel

Diese Methode beinhaltet die Konvertierung jeder Zeile der Datenrahmen in ein Tupel und prüft, ob die Tupel in beiden Datenrahmen vorhanden sind. Zeilen, die mit keinem Tupel im anderen Datenrahmen übereinstimmen, werden in den Differenzdatenrahmen aufgenommen.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]

Methode 2: Mit Indikator zusammenführen

Andere Der Ansatz besteht darin, df1 und df2 mithilfe einer Indikatorspalte zusammenzuführen. Durch die Angabe von how='left' in der Zusammenführung wird Zeilen aus df1, die keine entsprechenden Zeilen in df2 haben, der _merge-Spaltenwert left_only zugewiesen. Anschließend können Sie Zeilen basierend auf dieser Indikatorspalte herausfiltern, um den Differenzdatenrahmen zu erhalten.

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']

Das obige ist der detaillierte Inhalt vonWie kann ich die Unterschiede zwischen zwei Pandas-DataFrames effizient finden?. 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