尝试将自定义滚动函数应用于 pandas 数据框时出现异常。例如:
import statsmodels.api as sm
import pandas as pd
import numpy as np
def univar_regr_beta(y, x):
Y, X = y.as_matrix(), x.as_matrix()
X = sm.add_constant(X)
model = sm.OLS(Y, X)
return model.fit().params[1]
df = pd.DataFrame(np.random.randn(20,3))
srs = pd.Series(np.random.randn(20))
# this returns a value e.g.: 0.06608957
univar_regr_beta(df[0], srs)
# and this returns a rolling sum dataframe
df.rolling(5, 5).apply(np.sum)
# but this breaks when attemp to get rolling beta
df.rolling(5, 5).apply(lambda x: univar_regr_beta(x, srs))
具体来说,我得到的异常如下:
AttributeError: 'numpy.ndarray' object has no attribute 'as_matrix'
看起来好像当每列通过 lambda 传递到 univar_regr_beta 时,它是作为一个凹凸数组而不是一个系列传递的。我不确定是否有更好的方法来实现滚动测试,或者我是否只是错过了一些东西。
任何帮助表示赞赏。谢谢
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)