【问题标题】:Rolling average Pandas for 3 week period for specific column values特定列值的 3 周滚动平均值 Pandas
【发布时间】:2023-02-08 23:02:36
【问题描述】:

我有一个数据框“qbPast”,其中包含一个赛季的 nfl 球员数据。

P   Player  Week    Team    Opp Opp Rank    Points  Def TD  Def INT Def Yds/att Year
2   QB  Kyler Murray    2   ARI MIN 14  38.10   1.8125  1.0000  6.9 2021
3   QB  Lamar Jackson   2   BAL KC  6   37.26   1.6875  0.9375  7   2021
5   QB  Tom Brady   2   TB  ATL 28  30.64   1.9375  0.7500  6.8 2021

我正在尝试根据每 3 周期间的每个玩家的“积分”列创建一个新的滚动平均值,在前两周,它应该只返回该周的积分,之后它应该返回该周的平均值3 周移动期,例如玩家 A 得分 20、30、40、30、40,平均应返回 20、30、30、33.3 等。

我的尝试# qbPast['Avg'] = qbPast.groupby('Player')['Points'].rolling(3).mean().reset_index(drop=True)

问题是它只返回 3 周平均值全部players 我需要它按玩家过滤,以便它返回滚动平均值每个玩家,其他玩家不应影响滚动平均值。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    问题是索引对齐。不要使用 reset_index 而是删除第零个索引级别,然后将值分配给列

    qbPast['Avg'] = qbPast.groupby('Player').rolling(3)['Points'].mean().droplevel(0)
    

    【讨论】:

      【解决方案2】:

      您必须将 .reset_index(drop=True) 更改为 .reset_index(0, drop=True) 这样就不会将玩家索引混合在一起。

      【讨论】:

        猜你喜欢
        • 2019-09-04
        • 2016-10-17
        • 1970-01-01
        • 2019-06-16
        • 2019-08-10
        • 2017-09-12
        • 1970-01-01
        相关资源
        最近更新 更多