Я пытаюсь найти расширяющееся средство. Я могу заставить его работать, когда я повторяю и «группирую», просто фильтруя по определенным значениям, но это занимает слишком много времени. Я чувствую, что это должно быть простое приложение для групповой работы, но когда я делаю это, оно просто расширяет среднее значение для всего набора данных, а не просто делает это для каждой из групп в grouby.
для быстрого примера:
Я хочу взять это (в данном конкретном случае, сгруппированные по «игроку» и «году») и получить среднее значение.
player pos year wk pa ra
a qb 2001 1 10 0
a qb 2001 2 5 0
a qb 2001 3 10 0
a qb 2002 1 12 0
a qb 2002 2 13 0
b rb 2001 1 0 20
b rb 2001 2 0 17
b rb 2001 3 0 12
b rb 2002 1 0 14
b rb 2002 2 0 15
чтобы получить:
player pos year wk pa ra avg_pa avg_ra
a qb 2001 1 10 0 10 0
a qb 2001 2 5 0 7.5 0
a qb 2001 3 10 0 8.3 0
a qb 2002 1 12 0 12 0
a qb 2002 2 13 0 12.5 0
b rb 2001 1 0 20 0 20
b rb 2001 2 0 17 0 18.5
b rb 2001 3 0 12 0 16.3
b rb 2002 1 0 14 0 14
b rb 2002 2 0 15 0 14.5
Не уверен, где я иду не так:
# Group by player and season - also put weeks in correct ascending order
grouped = calc_averages.groupby(['player','pos','seas']).apply(pd.DataFrame.sort_values, 'wk')
grouped['avg_pa'] = grouped['pa'].expanding().mean()
Но это даст расширенное среднее значение для всего набора, а не для каждого игрока, сезона.