我正在尝试计算Pandas系列中的pct_change,但不是以常规方式计算相邻元素之间但在相隔两个位置的元素中的变化。
例如:
pd.Series([1, 2, 3, 4, 5, 6, 7])
0 1
1 2
2 3
3 4
4 5
5 6
6 7
dtype: int64
将1
与4
,2
与5
,3
与6
和4
与{{1} }(共3个步骤)。
答案 0 :(得分:2)
在pd.Series.pct_change
中使用periods
参数:
s.pct_change(periods=3)
输出:
0 NaN
1 NaN
2 NaN
3 3.00
4 1.50
5 1.00
6 0.75
dtype: float64
答案 1 :(得分:0)
尝试一下:
s = pd.Series(np.arange(1,10))
n_steps = 3
s.groupby(np.arange(len(s))%n_steps).pct_change()
输出:
0 NaN
1 NaN
2 NaN
3 3.00
4 1.50
5 1.00
6 0.75
7 0.60
8 0.50
dtype: float64