python-3.x - 如何构建基于时间的 EWMA

标签 python-3.x pandas moving-average

我正在计算基于时间的 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 来获得答案,但它看起来确实很简单。

关于如何解决这个问题有什么建议吗?预先感谢您!

最佳答案

使用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) 将其调整为较旧的值。

关于python-3.x - 如何构建基于时间的 EWMA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55979324/

相关文章:

python - 返回 python 3 中的选择点

python - 使用 'value' 作为主键和 'key' 作为辅助键对 python 字典进行排序

python-3.x - 最新的 centos docker 图像在 yum 存储库中没有 python3

python将元组列表分成确定大小的间隔

google-api - 我们如何使用谷歌图表 API 创建带有移动平均线的 OHLC 图表

python-3.x - kmeans群集中节点与质心之间的距离?

python - 平铺数据以创建 pandas 数据框

python - 将 pandas.TimeSeries 转换为 R.ts

r - 通过 R 中的向量向下移动窗口

geopandas - 如何使用 geopandas 最近邻居来制作移动平均值?