我有一个NBA比赛的熊猫数据框。以下是客场球队的数据样本:
away_team away_efg away_drb away_score
date
2000-10-31 19:00:00 Los Angeles Clippers 0.522 74.4 94
2000-10-31 19:00:00 Milwaukee Bucks 0.434 63.0 93
2000-10-31 19:30:00 Minnesota Timberwolves 0.523 73.8 106
2000-10-31 19:30:00 Charlotte Hornets 0.605 77.1 106
2000-10-31 19:30:00 Seattle SuperSonics 0.429 73.1 88
除了away_score
列之外,还有更多的数字列,以及与主队类似的列。在
我想要的是,对于每一行,用前面三个观察值的平均值替换数值列(而不是score),并按团队划分。通过执行以下操作,我几乎可以得到我想要的东西:
^{pr2}$例如,这会返回
>>> home_avg[home_avg["team"]=="Utah Jazz"].head()
3par ast blk drb efg ftr orb
0 NaN NaN NaN NaN NaN NaN NaN
50 NaN NaN NaN NaN NaN NaN NaN
81 0.146667 71.600000 9.4 74.666667 0.512000 0.347667 25.833333
带着这个,和
>>> home_df[home_df["team"]=="Utah Jazz"].head()
3par ast blk drb efg ftr orb stl team tov trb
0 0.118 76.7 7.1 64.7 0.535 0.365 25.6 11.5 Utah Jazz 10.8 42.9
50 0.100 63.9 9.1 80.5 0.536 0.414 27.6 2.2 Utah Jazz 20.2 58.6
81 0.222 74.2 12.0 78.8 0.465 0.264 24.3 7.3 Utah Jazz 13.9 50.0
122 0.119 81.8 11.3 75.0 0.515 0.642 25.0 12.2 Utah Jazz 21.8 52.5
135 0.129 76.7 17.8 75.9 0.650 0.400 37.9 5.7 Utah Jazz 18.8 62.7
演示在计算平均值时包含当前行。我想避免这个。更具体地说,第81行的期望输出将是所有NaN
s(因为还没有三个游戏),第122行的3par
列中的条目将是.146667(该列中第0、50和81行的值的平均值)。在
所以,我的问题是,如何在滚动平均数计算中排除当前行?在
您可以在这里使用^{} ,它将给定数量的索引移位,使滚动窗口使用除当前值外的最后三个值:
相应地,将apply函数更改为
lambda x: x.shift(1).rolling(window=3).mean()
,使其在特定示例中工作。在相关问题 更多 >
编程相关推荐