Скользящее среднее число совпадений по нескольким столбцам - PullRequest
0 голосов
/ 09 марта 2020

Извините, если это было задано, но я не могу найти другой вопрос, как этот.

У меня есть фрейм данных в Pandas, например:

Home   Away   Home_Score   Away_Score
MIL    NYC    1            2
ATL    NYC    1            3
NYC    PHX    2            1
HOU    NYC    1            6

Я хочу рассчитать скользящее среднее для каждой команды, но суть в том, что я хочу сделать это для всех их игр, как дома, так и в гостях вместе взятых.

Таким образом, для окна скользящей средней размера 3 для 'NY C' ответ должен быть (2 + 3 + 2) / 3 для строки 1, а затем (3 + 2 + 6) / 3 для строка 2 и др. c.

1 Ответ

1 голос
/ 09 марта 2020

Вы можете использовать stack, чтобы преобразовать два столбца в один и группировать:

(df[['Home_Score','Away_Score']]
   .stack()
   .groupby(df[['Home','Away']].stack().values)
   .rolling(3).mean()
   .reset_index(level=0, drop=True)
   .unstack()
   .add_prefix('Avg_')
)

Вывод:

   Avg_Away_Score  Avg_Home_Score
0             NaN             NaN
1             NaN             NaN
2             NaN        2.333333
3        3.666667             NaN
...