首页 > 解决方案 > 如何创建熊猫滚动的功能?

问题描述

我现在正在使用 python 和 pandas,我想创建一个函数来应用 pandas 的滚动方法。

我想为列滚动创建滚动重量平均值。

我已经尝试了下面的代码,我想要应用“权重”数组(最接近的值将产生最大的影响)

from pandas.core.window import _Rolling_and_Expanding
def weighted_mean(df):
    weight = np.asarray([0.05,0.1,0.15,0.175,0.525])
    x = np.dot(df,weight)
    result = x/len(weight)
    return pd.Series(result, index=['weightedMean'])

_Rolling_and_Expanding.weighted_mean = weighted_mean

但是,当应用于滚动功能时

df['weightedMean'] = df.return_.rolling(5).weighted_mean()

它显示了错误

----> 5     x = np.dot(df,weight)
      6     result = x/len(weight)
      7     return pd.Series(result, index=['weightedMean'])

<__array_function__ internals> in dot(*args, **kwargs)

TypeError: unsupported operand type(s) for *: 'Rolling' and 'float'

有人可以给我指路吗?非常感谢!!

标签: pythonpandasrolling-computation

解决方案


推荐阅读