Feb-23-2020, 12:07 PM
(Feb-22-2020, 11:30 PM)new_to_python Wrote: Usually, when do people use the function shift()?In many cases, when you need to compute differences of neighboring values in the array,
you can just use indexing, e.g.
import numpy as np x = np.array([1,2,3,4,5,6]) res = (x[1:] - x[:-1])/x[:-1]The
.shift
method might be helpful e.g. when working with dates:import pandas as pd index = pd.date_range('01 / 01 / 2020', periods = 5, freq ='10H') df = pd.DataFrame({"A":[1, 2, 3, 4, 5], "B":[10, 20, 30, 40, 50]}, index=index)
df
Output: A B
2020-01-01 00:00:00 1 10
2020-01-01 10:00:00 2 20
2020-01-01 20:00:00 3 30
2020-01-02 06:00:00 4 40
2020-01-02 16:00:00 5 50
df.shift(freq="5H")
Output: A B
2020-01-01 05:00:00 1 10
2020-01-01 15:00:00 2 20
2020-01-02 01:00:00 3 30
2020-01-02 11:00:00 4 40
2020-01-02 21:00:00 5 50
If freq
parameter is specified, and index
is of date/datetime type, this method shifts index values only.Finally, sometimes it is easier to type
df.shift(10)
and get shifted data instead of using index-based version, e.g. something like this df.values[10:, ...]
.