对于系列x
,x.diff()
使用y
,y[0] == NaN
,y[1] == x[1] - x[0]
等创建新系列y[2] == x[2] - x[1]
。假设我想要相当于除法而不是减法,例如y[1] == x[1] / x[0]
等。计算它的好方法是什么?
答案 0 :(得分:4)
答案 1 :(得分:2)
使用以下系列:
ser = pd.Series(np.random.randn(5))
ser
Out[65]:
0 1.206456
1 -0.209808
2 -0.200228
3 0.657034
4 1.395551
dtype: float64
您可以使用rolling().apply()(pandas 0.18.0 +):
ser.rolling(2).apply(lambda x: x[1] / x[0])
Out[66]:
0 NaN
1 -0.173904
2 0.954342
3 -3.281423
4 2.124018
dtype: float64
或者,pd.rolling_apply()(对于早期版本):
pd.rolling_apply(ser, 2, lambda x: x[1] / x[0])
Out[67]:
0 NaN
1 -0.173904
2 0.954342
3 -3.281423
4 2.124018
dtype: float64