【问题标题】:how to construct Time based EWMA如何构建基于时间的 EWMA
【发布时间】:2019-09-22 13:29:20
【问题描述】:

我正在计算基于时间的 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只能是一个固定的浮点数。

我的问题是:如何处理更改参数 c?我可以递归地遍历整个 df 以获得答案,但这似乎真的很简单。

关于如何解决这个问题的任何建议?提前谢谢!

【问题讨论】:

    标签: python-3.x pandas moving-average


    【解决方案1】:

    使用shift()

    如果我没看错的话,基本上你需要 time[x] 和 time[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) 将其调整为旧值。

    【讨论】:

    • 谢谢你的回复,你肯定读对了我的需要,但是东西是df.ewm(alpha = c),这里c只能是浮点数,不能是系列。因此,如果有意义的话,我不能将系列传递给函数。
    • 你看到这个answer了吗?我不认为我可以添加任何东西。
    猜你喜欢
    • 2022-01-03
    • 2019-03-07
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多