Heim >Backend-Entwicklung >Python-Tutorial >Wie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch nicht?

Wie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch nicht?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 10:45:44313Durchsuche

How to Identify Rows Present in One Pandas DataFrame but Not Another?

Ungewöhnliche Zeilen in Pandas-Datenrahmen identifizieren

Bei der Arbeit mit mehreren Datenrahmen ist es notwendig, Zeilen zu identifizieren, die in einem, aber nicht im anderen vorhanden sind. Angenommen, wir haben zwei Datenrahmen, df1 und df2, wobei df2 eine Teilmenge von df1 ist.

Wie können wir die Zeilen aus df1 extrahieren, die in df2 nicht vorhanden sind?

Betrachten Sie das folgende Beispiel:

import pandas as pd

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]})

print("df1:")
print(df1)

print("\ndf2:")
print(df2)

Ausgabe:

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

   col1  col2
0     1    10
1     2    11
2     3    12

Unser Ziel ist es, die Zeilen in df1 zu finden, die in nicht vorhanden sind df2.

Lösung:

Um die ungewöhnlichen Zeilen genau zu identifizieren, müssen wir eine Linksverknüpfung zwischen df1 und df2 für die Spalten col1 und col2 durchführen, um sicherzustellen, dass Duplikate entstehen in df2 werden eliminiert. Zusätzlich geben wir Indicator=True an, um eine zusätzliche Spalte zu erstellen, die die Quelle jeder zusammengeführten Zeile angibt.

Der resultierende Datenrahmen, df_all, enthält alle Zeilen von df1 und df2 mit einer zusätzlichen Spalte _merge, die angibt, ob a Zeile stammt aus beiden Datenrahmen (both), nur df1 (left_only) oder nur df2 (right_only).

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

Wir können jetzt Filtern Sie df_all, um die ungewöhnlichen Zeilen aus df1 mithilfe der booleschen Bedingung df_all['_merge'] == 'left_only' zu extrahieren.

df_uncommon = df_all[df_all['_merge'] == 'left_only']
print("\nUncommon rows in df1:")
print(df_uncommon)

Dies gibt die gewünschte Ausgabe zurück:

   col1  col2 _merge
3     4    13  left_only
4     5    14  left_only
5     3    10  left_only

Durch die Nutzung des linken Joins mit Duplikateliminierung und der Spalte „_merge“ können wir die Zeilen aus df1, die in nicht vorhanden sind, effektiv identifizieren und extrahieren df2.

Das obige ist der detaillierte Inhalt vonWie identifiziere ich Zeilen, die in einem Pandas-DataFrame vorhanden sind, in einem anderen jedoch nicht?. 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