大熊猫的滚动差异

是否有人知道一种有效的函数/方法,例如pandas.rolling\u mean,用于计算数组的滚动差

这是我最接近的解决方案:

roll_diff=pd.系列(值).diff(周期=1)

但是,它仅计算单步滚动差异。理想情况下,步长是可编辑的(即当前时间步长和n个最后步长之间的差值)

我也写过这篇文章,但对于较大的阵列,速度非常慢:

def滚动差异(值,步长):
差异=[]
对于np.arange中的i(步骤,len(值)-1):
pers_window=np.arange(i-1,i-step-1,-1)
差异附加(np.abs(值[i]-np.mean(值[pers_window]))
diff=np.pad(diff,(0,步骤+1),“常量”)
回差

那么:

导入熊猫
x=0.DataFrame({
‘x_1’:[0,1,2,3,0,1,2500,],},
索引=[0,1,2,3,4,5,6,7])
x[‘x_1’].滚动(窗口=2).应用(lambda x:x.iloc[1]-x.iloc[0])

通常,您可以用自己的函数替换lambda函数。请注意,在这种情况下,第一项将是NaN

更新

定义如下:

n\u步骤=2
定义我的乐趣(x):
返回x.iloc[-1]-x.iloc[0]
x['x_1'].滚动(窗口=n步)。应用(我的乐趣)

您可以在n_步计算值之间的差异

发表评论