我有一个包含股票名称和股票数据的多指数。它有65种不同的股票,日期持续5年 - 所以部分DF看起来像这样
High Low Open Px_last Volume
Date
SPOM US equity 12/31/2012 0.4575 0.2925 0.4575 0.3975 8890
1/1/2013 0.4575 0.2925 0.4575 0.3975 8890
1/2/2013 0.3975 0.3225 0.3975 0.3225 3400
1/3/2013 0.3738 0.28 0.34 0.29 48933
1/4/2013 0.4 0.3175 0.36 0.3175 3610
1/7/2013 0.47 0.2863 0.3 0.46 61854
1/8/2013 0.54 0.39 0.48 0.4575 86644
我想添加10D滚动平均值的列,我查看了其他一些帖子,例如stackoverflow.com/questions/38334832/rolling-averages-on-groups。我使用了这段代码并没有抛出任何错误,但问题是10D-MA列显示整个数据帧有nan。它没有计算任何数字。任何人都可以告诉我我做错了什么以及为什么这不会产生预期的结果
df2['10D-MA'] = df2.groupby(level=0).apply(lambda df2: df2['Px_last'].rolling(10).mean())
答案 0 :(得分:0)
IIUC
df['10D']=df.groupby(level=0).Px_last.apply(lambda x: x.rolling(10,min_periods=1).mean())
df
Out[93]:
High Low Open Px_last Volume 10D
Date
equity 12/31/2012 0.4575 0.2925 0.4575 0.3975 8890 0.397500
1/1/2013 0.4575 0.2925 0.4575 0.3975 8890 0.397500
1/2/2013 0.3975 0.3225 0.3975 0.3225 3400 0.372500
1/3/2013 0.3738 0.2800 0.3400 0.2900 48933 0.351875
1/4/2013 0.4000 0.3175 0.3600 0.3175 3610 0.345000
1/7/2013 0.4700 0.2863 0.3000 0.4600 61854 0.364167
1/8/2013 0.5400 0.3900 0.4800 0.4575 86644 0.377500