Panda's: hoe je het verschil tussen twee lijnen kunt vinden
U kunt de functie DataFrame.diff() gebruiken om het verschil tussen twee rijen in een panda’s DataFrame te vinden.
Deze functie gebruikt de volgende syntaxis:
DataFrame.diff(perioden=1, as=0)
Goud:
- perioden: het aantal voorgaande regels om het verschil te berekenen.
- as: zoek het verschil op rijen (0) of kolommen (1).
De volgende voorbeelden laten zien hoe u deze functie in de praktijk kunt gebruiken.
Voorbeeld 1: Zoek het verschil tussen elke voorgaande rij
Stel dat we de volgende panda’s DataFrame hebben:
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
De volgende code laat zien hoe u het verschil kunt vinden tussen elke huidige rij van een DataFrame en de vorige rij:
#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
Merk op dat we ook het verschil tussen verschillende voorgaande regels kunnen vinden. De volgende code laat bijvoorbeeld zien hoe u het verschil kunt vinden tussen elke huidige rij en de rij die drie rijen eerder verscheen:
#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
Voorbeeld 2: Zoek het verschil op basis van de voorwaarde
We kunnen het DataFrame ook filteren om rijen weer te geven waarin het verschil tussen de huidige rij en de vorige rij kleiner of groter is dan een bepaalde waarde.
De volgende code retourneert bijvoorbeeld alleen rijen waarin de waarde van de huidige rij kleiner is dan de waarde van de vorige rij:
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
Aanvullende bronnen
Hoe unieke waarden in meerdere kolommen in Panda’s te vinden
Hoe u een Pandas DataFrame filtert op kolomwaarden
Hoe rijen op index te selecteren in een Pandas DataFrame