我对通过滚动窗口计算统计数据感兴趣。统计数据将在多列上计算。这是一个玩具示例,用于计算滚动窗口上的回归系数。
def regression_coef(df):
if df.shape[0]==0:
return np.array([np.NaN, np.NaN])
y = df.y.values
X = df.drop('y',axis = 1).values
reg = LinearRegression().fit(X,y).coef_.round(2)
return reg
time = np.arange(5,3605,5)
x = np.random.normal(size = time.size)
z = np.random.normal(size = time.size)
y = 2*x+z + np.random.normal(size = time.size)
df = pd.DataFrame({'x':x, 'z':z, 'y':y}, index = pd.to_datetime(time, unit ='s'))
当我致电df.rolling('20 T').apply(regression_coef)
时,出现以下错误:AttributeError: 'numpy.ndarray' object has no attribute 'y'
。这使我相信df.rolling
可以计算各个列的统计信息,而不是在20分钟的窗口内找到所有观测值。
如何实现我想要的?也就是说,如何在滚动窗口中计算regression_coef
?特别是,我很想知道是否可以解决此问题,以便与偏移量和现有的熊猫API一起使用。