Pandas: so vergleichen sie zwei dataframes zeile für zeile
Mit den folgenden Methoden können Sie zwei Pandas-DataFrames Zeile für Zeile vergleichen:
Methode 1: DataFrames vergleichen und nur Zeilen mit Unterschieden beibehalten
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
Methode 2: DataFrames vergleichen und alle Zeilen behalten
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
Die folgenden Beispiele zeigen, wie jede Methode mit den folgenden Pandas-DataFrames verwendet wird:
import pandas as pd #create first DataFrame df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'], ' points ': [18, 22, 19, 14], ' assists ': [5, 7, 7, 9]}) print (df1) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 #create second DataFrame df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'], ' points ': [18, 30, 19, 20], ' assists ': [5, 7, 7, 9]}) print (df2) team points assists 0 to 18 5 1 B 30 7 2 C 19 7 3 E 20 9
Beispiel 1: DataFrames vergleichen und nur Zeilen mit Unterschieden beibehalten
Der folgende Code zeigt, wie man die beiden DataFrames Zeile für Zeile vergleicht und nur die Zeilen behält, die in mindestens einer Spalte Unterschiede aufweisen:
#compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
#view results
print (df_diff)
team points
1 coil B 22
other B 30
3 choke D 14
other E 20
Wir können sehen, dass die DataFrames zwei verschiedene Zeilen haben.
Insbesondere können wir sehen, dass die Zeilen an den Indexpositionen 1 und 3 jedes DataFrame in mindestens einer Spalte unterschiedliche Werte haben.
Die Werte in der Zeile „self“ zeigen die Werte des ersten DataFrame an, während die Werte in der anderen Zeile die Werte des zweiten DataFrame anzeigen.
Wir können zum Beispiel sehen:
- Die Zeile an Indexposition 1 des ersten DataFrame enthält B in der Teamspalte und 22 in der Punktespalte.
- Die Zeile an Indexposition 1 des zweiten DataFrame enthält B in der Teamspalte und 30 in der Punktespalte.
Hinweis : Das Argument keep_equal=True weist Pandas an, die Werte gleich zu halten. Ansonsten werden gleiche Werte als NaN angezeigt.
Beispiel 2: DataFrames vergleichen und alle Zeilen beibehalten
Der folgende Code zeigt, wie Sie das Argument keep_shape=True verwenden, um die beiden DataFrames Zeile für Zeile zu vergleichen und alle Zeilen der ursprünglichen DataFrames beizubehalten:
#compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
#view results
print (df_diff)
team points assists
0 choke A 18 5
other A 18 5
1 coil B 22 7
other B 30 7
2 choke C 19 7
other C 19 7
3 choke D 14 9
other E 20 9
Der resultierende DataFrame enthält alle Zeilen und Spalten der ursprünglichen DataFrames.
Hinweis Nr. 1 : Die Funktion „compare()“ geht davon aus, dass die beiden DataFrames die gleichen Abmessungen haben.
Hinweis Nr. 2: Die vollständige Dokumentation für die pandas -compare() -Funktion finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:
Pandas: So vergleichen Sie zwei Spalten
Pandas: So vergleichen Sie drei Spalten
Pandas: So vergleichen Sie Spalten in zwei verschiedenen DataFrames