我目前正在使用一个数据框,该数据框按日期建立索引,并为不同的股票行情自动收录子索引,对于每个日期/股票行情组合,该股票的收盘价和交易量。看起来像这样:
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天的滚动平均值,将不同的股票混合在一起,而我想计算每个股票的价格。我对此仍然缺乏经验,无法找出正确的语法来使它起作用。