我正在查看一些财务时间序列数据,但在使用dataFrame创建的数据透视表中添加新列时遇到问题。原始数据框称为 df ,格式如下。
Factor DlyReturn
DataDate
1996-12-31 BETA -1.447831e-03
1996-12-31 MOMENTUM -0.000090
1996-12-31 SIZE -2.030551e-03
1997-01-01 BETA -3.546312e-07
1997-01-01 MOMENTUM 0.000012
1997-01-01 SIZE -6.264164e-08
1997-01-02 BETA -1.789611e-03
1997-01-02 MOMENTUM -0.003170
1997-01-02 SIZE -2.353855e-04
1997-01-03 BETA 1.729851e-03
1997-01-03 MOMENTUM -0.000198
1997-01-03 SIZE 1.179356e-03
1997-01-06 BETA 6.946758e-04
1997-01-06 MOMENTUM 0.000812
1997-01-06 SIZE 1.956925e-04
df由列" DataDate"索引。我继续创建了一个数据透视表,可以在" DlyReturn"中为我提供值。首先通过"因子"索引然后用" DataDate"使用以下
索引pivot = pd.pivot_table(df,index=['Factor',df.index],values='DlyReturn')
新对象 pivot 现在具有以下格式:
Factor DataDate
BETA 1996-12-31 -0.000383
1997-01-01 -0.000010
1997-01-02 -0.003319
1997-01-03 -0.000467
1997-01-06 0.001267
我现在正尝试在此数据透视表中添加一列,以便在" DataDate"中包含的整个日期范围内为BETA,MOMENTUM和SIZE提供滚动标准偏差。我做了以下尝试,但一直收到错误
pivot['rolling_std']=pd.rolling_std(pivot.xs(('Factor','DataDate'),axis=0),window=252)
错误消息我一直收到KeyError :(' Factor',' DataDate')。无法弄清楚我的代码中是否存在错误,或者风格上我是否接近这一切都是错误的。希望有人会有一些建议。