我想使用自定义数组来加权时间序列中的值/数据帧像在How do I calculate a rolling mean with custom weights in pandas?里一样
import pandas as pd
ser = pd.Series([1,1,1], index=pd.date_range('1/1/2000', periods=3))
print ser
rm1 = pd.rolling_window(ser, window=[2,2,2], mean=False)
rm2 = pd.rolling_window(ser, window=[2,2,2]) #, mean=True
print rm1
#
#2000-01-01 NaN
#2000-01-02 NaN
#2000-01-03 6
#Freq: D, dtype: float64
print rm2
#
#2000-01-01 NaN
#2000-01-02 NaN
#2000-01-03 1
#Freq: D, dtype: float64
但熊猫0.20.3似乎已经不存在这种情况了。我该怎么做?在
就目前情况来看,我得到了错误
ValueError: window must be an integer
我特别感兴趣的是具有半高斯函数的衰老。所以这似乎很管用:
我想不出仅仅使用新的
rolling
方法的简单解决方案。似乎唯一的方法是创建一个dataframe并用加权值创建一个新列。在计算总数很简单。创建数据帧后,使用
^{pr2}$rolling
方法和sum。使用您提供的示例,窗口的大小看起来是3。在然而,计算加权平均值需要生成另一列来计算加权平均值,在该列中取加权列中的值并除以weight列中的值。这样可以确保你计算的是加权平均值,而不是加权值的平均值。。。这里差别很大。在
另一个检查解决方案是否有效的示例:
相关问题 更多 >
编程相关推荐