Heim >Backend-Entwicklung >Python-Tutorial >Wie vergleiche ich DataFrames für Unterschiede in Zeilen?

Wie vergleiche ich DataFrames für Unterschiede in Zeilen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-19 21:13:29283Durchsuche

How to Compare DataFrames for Differences in Rows?

Vergleichen von Datenrahmen auf Unterschiede in Zeilen

Beim Vergleich zweier Datenrahmen mit identischen Zeilen und Spalten wird die einfache Vergleichsoperation (df1 != df2) verwendet. ist ausreichend. Wenn die Datenrahmen jedoch unterschiedliche Zeilensätze haben, ist ein anderer Ansatz erforderlich, um die Unterschiede zu identifizieren.

Concat, Group und Filter

Eine Methode zum Vergleichen von Datenrahmen Zeilenunterschiede bestehen darin, sie zu verketten, nach Spalten zu gruppieren und die eindeutigen Zeilen zu filtern. Der folgende Code veranschaulicht dies:

<code class="python">df = pd.concat([df1, df2])
df = df.reset_index(drop=True)
df_gpby = df.groupby(list(df.columns))
idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]
result = df.reindex(idx)</code>

Der verkettete Datenrahmen (df) wird nach allen seinen Spalten (df_gpby) gruppiert. Die Methode „groups.values()“ gibt eine Iterable von Tupeln zurück, wobei jedes Tupel die Indizes eindeutiger Zeilen darstellt. Das Filtern der Tupel nach Länge (len(x) == 1) identifiziert die Zeilen, die nur in einem Datenrahmen vorhanden sind. Abschließend wird durch die Neuindizierung des Datenrahmens mit den gefilterten Indizes (idx) ein Datenrahmen erstellt, der die Zeilenunterschiede enthält.

Beispielausgabe

Unter Verwendung der bereitgestellten Beispieldatenrahmen:

>>> result
         Date   Fruit   Num   Color
9  2013-11-25  Orange   8.6  Orange
8  2013-11-25   Apple  22.1     Red

Diese Ausgabe zeigt die Zeilen, die sich in df2, aber nicht in df1 befinden.

Das obige ist der detaillierte Inhalt vonWie vergleiche ich DataFrames für Unterschiede in Zeilen?. 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