我现在将python和pandas一起使用,我想创建该函数以将其应用于pandas的滚动方法。
我想为列滚动创建滚动平均重量。
我尝试了下面的代码,我要应用“ weight”数组(最接近的值会产生最大的影响)
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'
有人可以给我指路吗?非常感谢!