Heim >Backend-Entwicklung >Python-Tutorial >Wie vergleiche ich zwei Datenrahmen und extrahiere Unterschiede basierend auf bestimmten Spalten?
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!