gpt4 book ai didi

Pandas - 用 groupby 扩展均值

转载 作者:行者123 更新时间:2023-12-03 20:16:43 24 4
gpt4 key购买 nike

我试图得到一个扩大的平均值。我可以在迭代和“分组”时仅通过按特定值过滤来使其工作,但这样做需要很长时间。我觉得这应该是一个使用 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()

但这将为整个系列提供一个扩展的平均值,而不是每个玩家,赛季。

最佳答案

尝试:

df.sort_values('wk').groupby(['player','pos','year'])['pa','ra'].expanding().mean()\
.reset_index()

输出:
  player pos  year  level_3         pa         ra
0 a qb 2001 0 10.000000 0.000000
1 a qb 2001 1 7.500000 0.000000
2 a qb 2001 2 8.333333 0.000000
3 a qb 2002 3 12.000000 0.000000
4 a qb 2002 4 12.500000 0.000000
5 b rb 2001 5 0.000000 20.000000
6 b rb 2001 6 0.000000 18.500000
7 b rb 2001 7 0.000000 16.333333
8 b rb 2002 8 0.000000 14.000000
9 b rb 2002 9 0.000000 14.500000

关于Pandas - 用 groupby 扩展均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52349218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com