Heim >Backend-Entwicklung >Python-Tutorial >Wie identifiziere ich Zeilen, die in df2 vorhanden, aber in df1 nicht vorhanden sind?

Wie identifiziere ich Zeilen, die in df2 vorhanden, aber in df1 nicht vorhanden sind?

Barbara Streisand
Barbara StreisandOriginal
2024-10-19 21:08:29463Durchsuche

How to Identify Rows Present in df2 But Absent in df1?

Unterschiede zwischen zwei Datenrahmen

Der Vergleich von Datenrahmen zur Identifizierung von Unterschieden ist für die Datenanalyse unerlässlich. Bei diesem Problem erhalten wir zwei Datenrahmen, df1 und df2, und müssen Zeilen finden, die in df2 vorhanden, aber in df1 nicht vorhanden sind.

Vergleich mit der Booleschen Matrix

Direkter Vergleich mit Operatoren wie != kann zu Fehlern führen, wenn die Datenrahmen unterschiedliche Strukturen haben. Ein besserer Ansatz besteht darin, die Datenrahmen zu verketten, ihre Indizes zurückzusetzen und sie dann zu vergleichen. Die Verwendung von df1 == df2 führt zu einer booleschen Matrix, in der „True“ die in beiden Datenrahmen vorhandenen Zeilen und „False“ Unterschiede angibt.

Gruppierung nach eindeutigen Werten

Als nächstes können wir eine Gruppierungsoperation durchführen auf dem verketteten Datenrahmen, um eindeutige Zeilen zu identifizieren. Das Ziel besteht darin, Zeilen zu finden, die nur einmal im Datenrahmen vorkommen. Dies können wir erreichen, indem wir die Länge der Gruppen überprüfen; Zeilen mit einer Länge von 1 stellen eindeutige Datensätze dar.

Filtern des Datenrahmens

Schließlich können wir die identifizierten eindeutigen Zeilenindizes verwenden, um den Datenrahmen zu filtern. Dadurch erhalten wir die Zeilen in df2, die in df1 nicht vorhanden sind.

Beispiel

Zum Beispiel unter Berücksichtigung der bereitgestellten Beispieldatenrahmen:

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

df1 = ...
df2 = ...

# Concatenate dataframes
df = pd.concat([df1, df2])
df = df.reset_index(drop=True)

# Group by unique values
df_gpby = df.groupby(list(df.columns))

# Get unique row indices
idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]

# Filter dataframe
result = df.reindex(idx)</code>

Der Ergebnisdatenrahmen enthält die Zeilen in df2, die in df1 nicht vorhanden sind.

Das obige ist der detaillierte Inhalt vonWie identifiziere ich Zeilen, die in df2 vorhanden, aber in df1 nicht vorhanden sind?. 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