Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich die eindeutigen Zeilen in DataFrame1, die nicht in DataFrame2 sind, effizient finden?

Wie kann ich die eindeutigen Zeilen in DataFrame1, die nicht in DataFrame2 sind, effizient finden?

Susan Sarandon
Freigeben: 2024-11-21 07:28:10
Original
686 Leute haben es durchsucht

How Can I Efficiently Find the Unique Rows in DataFrame1 That Are Not in DataFrame2?

Den Unterschied zwischen zwei Datenrahmen finden

Bei der Datenanalyse ist die Identifizierung der Diskrepanzen zwischen Datensätzen von entscheidender Bedeutung. Angenommen, Sie haben zwei Datenrahmen, df1 und df2, wobei df2 eine Teilmenge von df1 ist. Um die eindeutigen Zeilen und Spalten, die in df1, aber nicht in df2 vorhanden sind, effizient abzurufen, können Sie das Konzept der Mengendifferenz nutzen.

Ansatz: Verwendung von pd.concat und drop_duplicates**

Der primäre Ansatz besteht darin, beide Datenrahmen mithilfe von pd.concat zu kombinieren und anschließend doppelte Zeilen oder Spalten zu entfernen mit drop_duplicates. Durch die Einstellung keep=False wird sichergestellt, dass nur die Zeilen oder Spalten beibehalten werden, die ausschließlich in df1 vorhanden sind.

df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
Nach dem Login kopieren

Vorbehalt: Umgang mit Duplikaten

Dies ist jedoch der Fall Die Methode geht davon aus, dass beide Datenrahmen selbst keine doppelten Werte enthalten. Wenn dies der Fall ist, kann das Ergebnis ungenau sein. Um dieses Problem anzugehen, können wir die folgenden alternativen Ansätze anwenden:

Methode 1: Verwendung von isin mit Tuple

Diese Methode beinhaltet die Konvertierung jeder Zeile in ein Tupel mit df.apply(tuple, 1) und dann mit df.apply(tuple, 1) prüfen, ob die Tupel in df2 vorhanden sind 1).isin(df2.apply(tuple, 1)). Der resultierende Datenrahmen enthält die eindeutigen Zeilen von df1, die nicht in df2 enthalten sind.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
Nach dem Login kopieren

Methode 2: Zusammenführen mit Indikator

Ein anderer Ansatz besteht darin, df1 mit zusammenzuführen df2 verwendet pd.merge mit einem Indikator, um Zeilen zu identifizieren, die nur in df1 vorhanden sind. Durch den Einsatz der Lambda-Funktion können wir Zeilen herausfiltern, in denen die Spalte „_merge“ nicht gleich „both“ ist.

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
Nach dem Login kopieren

Fazit

Indem wir diese nutzen Mit diesen Techniken können Sie effektiv den Unterschied zwischen zwei Datenrahmen ermitteln und Einblicke in die einzigartigen Datenpunkte gewinnen, die in jedem Datenrahmen vorhanden sind.

Das obige ist der detaillierte Inhalt vonWie kann ich die eindeutigen Zeilen in DataFrame1, die nicht in DataFrame2 sind, effizient finden?. 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