【发布时间】:2018-09-15 21:56:09
【问题描述】:
我正在尝试扩展均值。当我通过按特定值过滤来迭代和“分组”时,我可以让它工作,但这需要很长时间才能完成。我觉得这应该是一个使用 groupby 的简单应用程序,但是当我这样做时,它只是对整个数据集执行扩展均值,而不是仅对 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()
但这将扩大整个系列的平均值,而不是每个球员,每个赛季。
【问题讨论】:
标签: pandas pandas-groupby