我有一个数据帧,其中包含自 2009 年以来发生的每场 NFL 比赛的信息。我的目标是找出每个赛季哪些球队拥有最多的“重要比赛”。为了做到这一点,我找到了所有超过 20 码的比赛,按年份和球队对它们进行分组,并得到每个组的大小。
big_plays = (df[df['yards_gained'] >= 20]
.groupby([df['game_date'].dt.year, 'posteam'])
.size())
这导致以下系列:
game_date posteam
2009 ARI 55
ATL 51
BAL 55
BUF 37
CAR 52
CHI 58
CIN 51
CLE 31
DAL 68
DEN 42
DET 42
GB 65
HOU 63
IND 67
JAC 51
KC 44
MIA 34
MIN 64
NE 48
NO 72
NYG 69
NYJ 54
OAK 38
PHI 68
PIT 72
SD 71
SEA 45
SF 51
STL 42
TB 51
..
2018 BAL 44
BUF 55
CAR 64
CHI 66
CIN 69
CLE 70
DAL 51
DEN 59
Length: 323, dtype: int64
到目前为止,这正是我想要的。但是,我被困在下一步。我想要 MultiIndex 中每个组的 n 个最大值,或者每个赛季“大戏”次数最多的 n 支球队。
我以一种繁琐的方式半成功地解决了这个任务。如果我groupby是 MultiIndex 的第 0 级,然后nlargest在该 groupby 上运行该函数,则会得到以下结果(为简洁起见,截断为前两年):
big_plays.groupby(level=0).nlargest(5)
回报
game_date game_date posteam
2009 2009 NO 72
PIT 72
SD 71
NYG 69
DAL 68
2010 2010 PHI 81
NYG 78
PIT 78
SD 75
DEN 73
这(相当不雅)解决了问题,但我想知道如何更好地实现或多或少相同的结果。
呼啦一阵风
相关分类