by_year.apply(regress,'AAPL',['SPX'])
import statsmodels.api as sm
def regress(data,yvar,xvars):
Y=data[yvar]
X=data[xvars]
X['intercept']=1
result=sm.OLS(Y,X).fit()
return result.params
by_year是pandas groupby object,我不知道' AAPL'和[' SPX']为什么使用[]代表SPX
答案 0 :(得分:2)
一般情况下,data['SPX']
会返回Series
,data[['SPX']]
会返回DataFrame
。
特别针对您的情况,使用['SPX']
更有意义,因为您的regress
函数会尝试向intercept
变量添加名为X
的列。为确保您可以将该列实际添加到变量X
,变量X
必须是DataFrame
,而不是Series
。
底线是这种特殊情况有所不同。
我希望这会有所帮助。