Обратное скользящее среднее для DataFrame - PullRequest
1 голос
/ 05 июля 2019

Я пытаюсь создать сетку сложности с использованием 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?

1 Ответ

1 голос
/ 05 июля 2019

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
...