Pandas: so finden sie den unterschied zwischen zwei linien
Sie können die Funktion DataFrame.diff() verwenden, um den Unterschied zwischen zwei Zeilen in einem Pandas-DataFrame zu ermitteln.
Diese Funktion verwendet die folgende Syntax:
DataFrame.diff(Perioden=1, Achse=0)
Gold:
- Perioden: Die Anzahl der vorherigen Zeilen zur Berechnung der Differenz.
- Achse: Finden Sie den Unterschied in Zeilen (0) oder Spalten (1).
Die folgenden Beispiele zeigen, wie Sie diese Funktion in der Praxis nutzen können.
Beispiel 1: Finden Sie den Unterschied zwischen den einzelnen vorherigen Zeilen
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 15, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #view DataFrame df period sales returns 0 1 12 2 1 2 14 2 2 3 15 3 3 4 15 3 4 5 18 5 5 6 20 4 6 7 19 4 7 8 24 6
Der folgende Code zeigt, wie Sie den Unterschied zwischen jeder aktuellen Zeile eines DataFrame und der vorherigen Zeile ermitteln:
#add new column to represent sales differences between each row df[' sales_diff '] = df[' sales ']. diff () #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 2.0 2 3 15 3 1.0 3 4 15 3 0.0 4 5 18 5 3.0 5 6 20 4 2.0 6 7 19 4 -1.0 7 8 24 6 5.0
Beachten Sie, dass wir auch den Unterschied zwischen mehreren vorherigen Zeilen ermitteln können. Der folgende Code zeigt beispielsweise, wie Sie den Unterschied zwischen jeder aktuellen Zeile und der Zeile ermitteln, die drei Zeilen zuvor angezeigt wurde:
#add new column to represent sales differences between current row and 3 rows earlier df[' sales_diff '] = df[' sales ']. diff (periods= 3 ) #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 NaN 2 3 15 3 NaN 3 4 15 3 3.0 4 5 18 5 4.0 5 6 20 4 5.0 6 7 19 4 4.0 7 8 24 6 6.0
Beispiel 2: Finden Sie den Unterschied basierend auf der Bedingung
Wir können den DataFrame auch filtern, um Zeilen anzuzeigen, bei denen die Differenz zwischen der aktuellen Zeile und der vorherigen Zeile kleiner oder größer als ein bestimmter Wert ist.
Der folgende Code gibt beispielsweise nur Zeilen zurück, in denen der Wert der aktuellen Zeile kleiner als der Wert der vorherigen Zeile ist:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 13, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #find difference between each current row and the previous row df[' sales_diff '] = df[' sales ']. diff () #filter for rows where difference is less than zero df = df[df[' sales_diff ']< 0 ] #view DataFrame df period sales returns sales_diff 3 4 13 3 -2.0 6 7 19 4 -1.0
Zusätzliche Ressourcen
So finden Sie in Pandas eindeutige Werte in mehreren Spalten
So filtern Sie einen Pandas DataFrame nach Spaltenwerten
So wählen Sie Zeilen nach Index in einem Pandas DataFrame aus