DataFrame 的反向滚动均值

Reverse Rolling mean for DataFrame

我正在尝试使用 DataFrame 创建夹具难度网格。我想要每支球队接下来 5 场比赛的平均值。

我目前正在使用 df.rolling(5, min_periods=1).mean().shift(-4)。这在一开始是有效的,但在最后会拉动 NAN。我明白为什么返回 NAN——没有向上移动的 DF。理想情况下,我希望 NAN 在剩余值中变得平均,相对于 38 的值只是它的当前值?

夹具困难

ARS AVL BHA BOU                  
3   4   3   2    
2   2   2   2    
5   2   2   4
4   2   5   3
3   2   2   2

接下来 5 个赛程的平均值

ARS AVL BHA BOU        
3.4 2.4 2.8 2.6    
3.2 2.4 2.8 2.6    
3.6 2.4 3.2 2.6    
3   2.4 3.6 2.6    
2.6 2.4 3   2.4

NAN 在最后的记录中没有什么可以向上移动的。

3.2 3.6 2.8 3.6    
nan nan nan nan    
nan nan nan nan    
nan nan nan nan    
nan nan nan nan

我可以采用这种方法还是需要完全不同的方法来填充 NAN?

IIUC 你需要通过索引来反转值,使用滚动和反转:

df1 = df.iloc[::-1].rolling(5, min_periods=1).mean().iloc[::-1]
print (df1)
   ARS  AVL   BHA   BOU
0  3.4  2.4  2.80  2.60
1  3.5  2.0  2.75  2.75
2  4.0  2.0  3.00  3.00
3  3.5  2.0  3.50  2.50
4  3.0  2.0  2.00  2.00