将新列添加到df.pivot_table

时间:2015-11-15 21:18:45

标签: python-2.7 pandas indexing pivot-table financial

我正在查看一些财务时间序列数据,但在使用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')。无法弄清楚我的代码中是否存在错误,或者风格上我是否接近这一切都是错误的。希望有人会有一些建议。

0 个答案:

没有答案