使用pandas指数加权移动std作为具有*固定*窗口大小的滑动窗口

时间:2015-09-21 16:11:25

标签: python numpy pandas

我想使用pandas ewmstd函数作为滚动窗口(仅使用最后N个元素)而不是作为展开窗口(使用所有元素)。任何人都知道如何做到这一点?这是一个例子:

set = np.array([0,0,0,0,0,0,0,10,10,10])
set2 = np.array([1,0,0,0,0,0,0,10,10,10])

set_op = pd.ewmstd(set, span=5)
set2_op = pd.ewmstd(set2, span=5)

print 'set_op', set_op
print 'set2_op', set2_op

输出:

set_op [ nan 0. 0. 0. 0. 0. 0. 5.37639567  5.57181916  5.06335969]
set_op2 [ nan 0.70 0.51 0.39 0.30 0.24 0.19   5.36   5.55 5.04]

如果操作仅使用最后5个元素,则set_op [7]应该产生与set_op2 [7]相同的结果,并忽略set2开头的1。

1 个答案:

答案 0 :(得分:0)

John John,我想出了这个并且有效:

def onetime_ewmstd(arr):
    return pd.ewmstd(arr, span=5)[-1]

set_rollop = pd.rolling_apply(set,5,onetime_ewmstd)