How do you apply a shift to a Julia Dataframe?

In python pandas, the shift function is useful to shift the rows in the dataframe forward and possible relative to the original which allows for calculating changes in time series data. What is the equivalent method in Julia?


Solution 1:

Normally one would use ShiftedArrays.jl and apply it to columns that require shifting.

Solution 2:

Here is a small working example:

using DataFrames, ShiftedArrays

df = DataFrame(a=1:3, b=4:6)
3×2 DataFrame
 Row │ a      b     
     │ Int64  Int64 
─────┼──────────────
   1 │     1      4
   2 │     2      5
   3 │     3      6

transform(df, :a => lag => :lag_a)
3×3 DataFrame
 Row │ a      b      lag_a   
     │ Int64  Int64  Int64?  
─────┼───────────────────────
   1 │     1      4  missing 
   2 │     2      5        1
   3 │     3      6        2

or you could do:

df.c = lag(df.a)

or, to have the lead of two rows:

df.c = lead(df.a, 2)

etc.