Come creare una colonna di offset in pandas (con esempi)
Puoi utilizzare la funzione shift() in Panda per creare una colonna che visualizzi i valori spostati da un’altra colonna.
Questa funzione utilizza la seguente sintassi di base:
df[' lagged_col1 '] = df[' col1 ']. shift ( 1 )
Da notare che il valore della funzione shift() indica il numero di valori per i quali calcolare lo spostamento.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: creare una colonna di offset in Pandas
Supponiamo di avere il seguente DataFrame panda che mostra le vendite effettuate da un negozio in 10 giorni consecutivi:
import pandas as pd #createDataFrame df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' sales ': [18, 10, 14, 13, 19, 24, 25, 29, 15, 18]}) #view DataFrame print (df) day sales 0 1 18 1 2 10 2 3 14 3 4 13 4 5 19 5 6 24 6 7 25 7 8 29 8 9 15 9 10 18
Possiamo utilizzare la funzione shift() per creare una colonna di spostamento che mostri le vendite del giorno precedente per ogni riga:
#add column that represents lag of sales column df[' sales_previous_day '] = df[' sales ']. shift ( 1 ) #view updated DataFrame print (df) day sales sales_previous_day 0 1 18 NaN 1 2 10 18.0 2 3 14 10.0 3 4 13 14.0 4 5 19 13.0 5 6 24 19.0 6 7 25 24.0 7 8 29 25.0 8 9 15 29.0 9 10 18 15.0
Ecco come interpretare il risultato:
- Il primo valore nella colonna del ritardo è NaN poiché non esiste un valore precedente nella colonna delle vendite .
- Il secondo valore nella colonna offset è 18 poiché è il valore precedente nella colonna Vendite .
- Il terzo valore nella colonna offset è 10 poiché è il valore precedente nella colonna Vendite .
E così via.
Tieni presente che possiamo anche aggiungere più colonne offset al DataFrame se vogliamo:
#add two lag columns df[' sales_previous_day '] = df[' sales ']. shift ( 1 ) df[' sales_previous_day2 '] = df[' sales ']. shift ( 2 ) #view updated DataFrame print (df) day sales sales_previous_day sales_previous_day2 0 1 18 NaN NaN 1 2 10 18.0 NaN 2 3 14 10.0 18.0 3 4 13 14.0 10.0 4 5 19 13.0 14.0 5 6 24 19.0 13.0 6 7 25 24.0 19.0 7 8 29 25.0 24.0 8 9 15 29.0 25.0 9 10 18 15.0 29.0
Puoi utilizzare lo stesso approccio generale per aggiungere tutte le colonne di offset che desideri.
Nota : per creare una colonna primaria, utilizzare semplicemente valori negativi nella funzione shift() .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:
Come eliminare colonne in Pandas
Come escludere colonne in Pandas
Come applicare una funzione alle colonne selezionate in Pandas
Come modificare l’ordine delle colonne in Pandas DataFrame