我正在计算定义的基于时间的EWMA:
其中:
在以下示例数据帧df上:
index time x
0 1 5
1 1.3 4
2 1.4 8
3 2.8 3
例如,在时间3:
我知道在python中我们可以使用df['ewma'] = df['x'].ewm(alpha = c)
来计算简单的ewma,但是这里c
只能是固定的float。
我的问题是:如何处理更改参数c?我可以递归地遍历整个df以获得答案,但这似乎并不复杂。
有关如何解决此问题的任何建议?预先谢谢你!
答案 0 :(得分:0)
使用shift()
基本上,如果我没有看错,那么您需要时间[x]和时间[x-1]来解决您的问题。
只需创建一个新列:
df['time_prev'] = df['time'].shift(1)
print(df)
index time x time_prev
0 0 1.0 5 NaN
1 1 1.3 4 1.0
2 2 1.4 8 1.3
3 3 2.8 3 1.4
然后,您可以将time_prev用作计算中的上一个值。您可以通过增加.shift(3)作为示例将其调整为较旧的值。