So vergleichen sie zwei dataframes in pandas
Oftmals könnte es für Sie von Interesse sein, die Werte zwischen zwei Panda-DataFrames zu vergleichen, um deren Ähnlichkeiten und Unterschiede zu erkennen.
In diesem Tutorial wird erklärt, wie es geht.
Beispiel: Vergleich zweier DataFrames in Pandas
Angenommen, wir haben die folgenden zwei Panda-DataFrames, die jeweils Daten zu vier Basketballspielern enthalten:
import pandas as pd #define DataFrame 1 df1 = pd. DataFrame ({'player': ['A', 'B', 'C', 'D'], 'points': [12, 15, 17, 24], 'assists': [4, 6, 7, 8]}) df1 player points assists 0 to 12 4 1 B 15 6 2 C 17 7 3 D 24 88 #define DataFrame 2 df2 = pd. DataFrame ({'player': ['A', 'B', 'C', 'D'], 'points': [12, 24, 26, 29], 'assists': [7, 8, 10, 13]}) df2 player points assists 0 to 12 7 1 B 24 8 2 C 26 10 3 D 29 13
Beispiel 1: Finden Sie heraus, ob die beiden DataFrames gleich sind.
Ob die beiden DataFrames identisch sind, können wir zunächst mit der Funktion DataFrame.equals() herausfinden:
#see if two DataFrames are identical df1. equals (df2) False
Die beiden DataFrames enthalten nicht genau die gleichen Werte, daher gibt diese Funktion korrekt False zurück.
Beispiel 2: Finden Sie die Unterschiede in den Spielerstatistiken zwischen den beiden DataFrames.
Mit der Funktion pandas subtract() können wir die Unterschiede zwischen den Assists und Punkten der einzelnen Spieler ermitteln:
#subtract df1 from df2 df2. set_index ('player'). subtract (df1.set_index('player')) assist points player At 0 3 B 9 2 C 9 3 D 5 5
Die Art und Weise, dies zu interpretieren, ist:
- Spieler A hatte in beiden DataFrames die gleiche Anzahl an Punkten, hatte aber in DataFrame 2 drei weitere Assists.
- Spieler B hatte 9 Punkte mehr und 2 Assists mehr in DataFrame 2 im Vergleich zu DataFrame 1.
- Spieler C hatte 9 Punkte mehr und 3 Assists mehr in DataFrame 2 im Vergleich zu DataFrame 1.
- Spieler D hatte 5 Punkte mehr und 5 Assists mehr in DataFrame 2 im Vergleich zu DataFrame 1.
Beispiel 3: Finden Sie alle Zeilen, die nur in einem einzelnen DataFrame vorhanden sind.
Wir können den folgenden Code verwenden, um eine vollständige Liste der Zeilen zu erhalten, die nur in einem einzelnen DataFrame erscheinen:
#outer merge the two DataFrames, adding an indicator column called 'Exist' diff_df = pd. merge (df1, df2, how=' outer ', indicator=' Exist ') #find which rows don't exist in both DataFrames diff_df = diff_df. loc [diff_df[' Exist '] != ' both '] diff_df player points assists Exist 0 A 12 4 left_only 1 B 15 6 left_only 2 C 17 7 left_only 3 D 24 8 left_only 4 A 12 7 right_only 5 B 24 8 right_only 6 C 26 10 right_only 7 D 29 13 right_only
In diesem Fall teilen sich die beiden DataFrames keine identischen Zeilen, sodass es insgesamt 8 Zeilen gibt, die nur in einem der DataFrames erscheinen.
Die Spalte mit der Bezeichnung „Exist“ gibt uns praktischerweise Auskunft darüber, in welchem DataFrame jede Zeile eindeutig vorkommt.