小编eln*_*nap的帖子

熊猫滚动加权平均值

我想将加权滚动平均值应用于大型时间序列,设置为 pandas 数据框,其中每天的权重都不同。这是数据框的子集

DF:

Date        v_std  vertical                  
2010-10-01  1.909   545.231
2010-10-02  1.890   538.610
2010-10-03  1.887   542.759
2010-10-04  1.942   545.221
2010-10-05  1.847   536.832
2010-10-06  1.884   538.858
2010-10-07  1.864   538.017
2010-10-08  1.833   540.737
2010-10-09  1.847   537.906
2010-10-10  1.881   538.210
2010-10-11  1.868   544.238
2010-10-12  1.856   534.878
Run Code Online (Sandbox Code Playgroud)

我想使用 v_std 作为权重来获取垂直列的滚动平均值。我一直在使用加权平均函数:

def wavg(group, avg_name, weight_name):
    d = group[avg_name]
    w = group[weight_name]
    try:
        return (d * w).sum() / w.sum()
    except ZeroDivisionError:
        return d.mean()
Run Code Online (Sandbox Code Playgroud)

但我不知道如何实现滚动加权平均值。我认为它类似于

df.rolling(window = 7).apply(wavg, "vertical", "v_std")
Run Code Online (Sandbox Code Playgroud)

或利用rolling_apply?或者我必须一起编写一个新函数吗?谢谢你!

python weighted-average pandas

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

pandas ×1

python ×1

weighted-average ×1