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
Freigeben: 2024-12-15 21:07:13
Original
287 Leute haben es durchsucht

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]})
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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']
Nach dem Login kopieren
   col1  col2
0     4    13
1     5    14
2     3    10
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage