Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man eindeutige Zeilen in Pandas-DataFrames beim Vergleich zweier DataFrames effizient identifizieren?

Wie kann man eindeutige Zeilen in Pandas-DataFrames beim Vergleich zweier DataFrames effizient identifizieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 21:07:13287Durchsuche

How to Efficiently Identify Unique Rows in Pandas DataFrames When Comparing Two DataFrames?

Eindeutige Zeilen in Pandas-Datenrahmen erhalten

Bei zwei Pandas-Datenrahmen ist es häufig erforderlich, Zeilen zu identifizieren, die nur in einem von ihnen vorhanden sind. Dies kann effektiv durch die Verwendung einer Zusammenführungsoperation erreicht werden.

Betrachten Sie beispielsweise die folgenden Datenrahmen:

df1 = pd.DataFrame(data={'col1': [1, 2, 3, 4, 5, 3], 'col2': [10, 11, 12, 13, 14, 10]})
df2 = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [10, 11, 12]})

Um Zeilen aus df1 zu erhalten, die in df2 nicht vorhanden sind, können wir Folgendes ausführen: Linksverknüpfung zwischen df1 und df2. Um sicherzustellen, dass jede Zeile in df1 mit genau einer Zeile in df2 übereinstimmt, müssen wir zunächst doppelte Zeilen aus df2 entfernen. Wir können dies tun, indem wir die Funktion drop_duplicates() verwenden.

df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)

Der resultierende df_all-Datenrahmen verfügt über eine zusätzliche Spalte mit dem Namen _merge, die angibt, ob jede Zeile sowohl von df1 als auch von df2 („beide“) stammt Nur df1 ('left_only') oder nur aus df2 ('right_only').

   col1  col2     _merge
0     1    10       both
1     2    11       both
2     3    12       both
3     4    13  left_only
4     5    14  left_only
5     3    10  left_only

Zum Extrahieren der Zeilen aus df1, die in df2 nicht vorhanden sind, können wir einfach die Zeilen auswählen, in denen _merge gleich „left_only“ ist:

rows_not_in_df2 = df_all[df_all['_merge'] == 'left_only']
   col1  col2
0     4    13
1     5    14
2     3    10

Vermeidung falscher Ansätze

Es ist wichtig, falsche Lösungen zu vermeiden, die die Zeilen nicht als Ganzes betrachten. Einige Lösungen prüfen nur, ob jeder einzelne Wert in einer Zeile im anderen Datenrahmen vorhanden ist, was zu falschen Ergebnissen führen kann.

Zum Beispiel, wenn wir df1 eine weitere Zeile mit den Daten [3, 10] hinzugefügt hätten, was auch in df2 vorhanden ist, würden die falschen Ansätze es immer noch als nicht vorhanden in df2 identifizieren, da es in den beiden Spalten unterschiedliche Werte hat. Unser Ansatz erkennt es jedoch korrekt als nicht vorhanden, da es bereits in df2 mit den gleichen Werten für beide Spalten vorhanden ist.

Das obige ist der detaillierte Inhalt vonWie kann man eindeutige Zeilen in Pandas-DataFrames beim Vergleich zweier DataFrames effizient identifizieren?. 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