熊猫在多索引数据帧上的滚动平均值

时间:2019-07-12 14:26:24

标签: python pandas multi-index rolling-computation

我目前正在使用一个数据框,该数据框按日期建立索引,并为不同的股票行情自动收录子索引,对于每个日期/股票行情组合,该股票的收盘价和交易量。看起来像这样:

                   close      volume
date       ticker                    
2017-01-03 AAPL    116.15  28781865.0
           AMZN    753.67   3521066.0
           MSFT     62.58  20694101.0
           TSLA    216.99   5923254.0
2017-01-04 AAPL    116.02  21118116.0
           AMZN    757.18   2510526.0
           MSFT     62.30  21339969.0
           TSLA    226.99  11213471.0
2017-01-05 AAPL    116.61  22193587.0
           AMZN    780.45   5830068.0
           MSFT     62.30  24875968.0
           TSLA    226.75   5911695.0
2017-01-06 AAPL    117.91  31751900.0
           AMZN    795.99   5986234.0
           MSFT     62.84  19922919.0
           TSLA    229.01   5527893.0
2017-01-09 AAPL    118.99  33561948.0
           AMZN    796.92   3446109.0
           MSFT     62.64  20382730.0
           TSLA    231.28   3979484.0
2017-01-10 AAPL    119.11  24462051.0
           AMZN    795.90   2558369.0
           MSFT     62.62  18593004.0
           TSLA    229.87   3659955.0

我想计算“关闭”列的3天移动平均值(滚动3天平均值),并为此添加一个新列。但是,当我按常规方式进行操作时:

df['rolling_mean'] = df['close'].rolling(3).mean()
print(df)

结果如下:

                    close      volume  rolling_mean
date       ticker                                  
2017-01-03 AAPL    116.15  28781865.0           NaN
           AMZN    753.67   3521066.0           NaN
           MSFT     62.58  20694101.0    310.800000
           TSLA    216.99   5923254.0    344.413333
2017-01-04 AAPL    116.02  21118116.0    131.863333
           AMZN    757.18   2510526.0    363.396667
           MSFT     62.30  21339969.0    311.833333
           TSLA    226.99  11213471.0    348.823333
2017-01-05 AAPL    116.61  22193587.0    135.300000
           AMZN    780.45   5830068.0    374.683333
           MSFT     62.30  24875968.0    319.786667
           TSLA    226.75   5911695.0    356.500000
2017-01-06 AAPL    117.91  31751900.0    135.653333
           AMZN    795.99   5986234.0    380.216667
           MSFT     62.84  19922919.0    325.580000
           TSLA    229.01   5527893.0    362.613333
2017-01-09 AAPL    118.99  33561948.0    136.946667
           AMZN    796.92   3446109.0    381.640000
           MSFT     62.64  20382730.0    326.183333
           TSLA    231.28   3979484.0    363.613333
2017-01-10 AAPL    119.11  24462051.0    137.676667
           AMZN    795.90   2558369.0    382.096667
           MSFT     62.62  18593004.0    325.876667
           TSLA    229.87   3659955.0    362.796667

它将计算3天的滚动平均值,将不同的股票混合在一起,而我想计算每个股票的价格。我对此仍然缺乏经验,无法找出正确的语法来使它起作用。

0 个答案:

没有答案