考虑一个pandas
数据帧,例如,这样生成:
dog = np.random.randn(100, 10)
df2 = pd.Dataframe(dog)
现在,如果我想获得滚动协方差,那就是彩虹和独角兽:
cs = df2.rolling(20).cov()
但是现在,假设我想变得聪明一点,并因此计算出健壮的协方差:
def cov_robust(X):
oas = sklearn.covariance.OAS()
oas.fit(X)
return pd.DataFrame(oas.covariance_,
index=X.columns, columns=X.columns)
然后是csr = df2.rolling(20).apply(cov_robust)
此错误错误地声称它在期望2d数组时获得了1d数组。我已经假设(基于cov()
的示例)要应用的函数的参数是整个窗口(在本例中为20 x 10数组),但显然不是。欢迎任何启发。