Heim  >  Artikel  >  Backend-Entwicklung  >  Wie vergleiche ich zwei Datenrahmen und extrahiere Unterschiede basierend auf bestimmten Spalten?

Wie vergleiche ich zwei Datenrahmen und extrahiere Unterschiede basierend auf bestimmten Spalten?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 21:14:02346Durchsuche

How to Compare Two Dataframes and Extract Differences Based on Specific Columns?

Zwei Datenrahmen vergleichen und Unterschiede identifizieren

In Ihrem Szenario haben Sie zwei Datenrahmen, df1 und df2, mit identischen Strukturen und Zeilenindizes. Ihr Ziel besteht darin, durch Vergleich ihrer Datums- und Fruchtwerte festzustellen, welche Zeilen in df2, aber nicht in df1 vorhanden sind.

Direkter Vergleich

Der Ansatz der Verwendung von df1 != df2 ist nicht geeignet, da identisch beschriftete Datenrahmen erforderlich sind. Auch das Entfernen des Datumsindex löst das Problem nicht.

Verkettung und Gruppierung

Um die Unterschiede zu finden, können Sie die Datenrahmen zu einem einzigen Datenrahmen df verketten:

<code class="python">import pandas as pd

df = pd.concat([df1, df2])
df = df.reset_index(drop=True)</code>

Gruppieren Sie df nach allen seinen Spalten, um eindeutige Datensätze zu identifizieren:

<code class="python">df_gpby = df.groupby(list(df.columns))</code>

Eindeutige Datensätze filtern

Als nächstes rufen Sie die Indizes eindeutiger Datensätze ab , das sind diejenigen mit einer Gruppengröße von 1:

<code class="python">idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]</code>

Schließlich können Sie diese Indizes verwenden, um den verketteten Datenrahmen zu filtern, um nur die Zeilen zu erhalten, die exklusiv für df2:

<code class="python">df.reindex(idx)</code>
Dadurch wird ein Datenrahmen zurückgegeben, der die gewünschten Unterschiede enthält:

Das obige ist der detaillierte Inhalt vonWie vergleiche ich zwei Datenrahmen und extrahiere Unterschiede basierend auf bestimmten Spalten?. 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