我有一个pandas DataFrame,其中包含棒球防守统计数据。每一行都显示了一名球员在其职业生涯中在特定位置上出场的次数。
玩家 | 位置 | 游戏|
---|---|---|
Brock Holt | 2B | 20 |
Brock Holt | ||
Ben Zobrist | ||
Ben Zobrist | 2B | 15 |
您可以转换max
并使用eq
创建布尔掩码,其中True对应于每个玩家玩得最多的游戏行。然后过滤df
:
msk = df.groupby('Player')['Games'].transform('max').eq(df['Games'])
out = df[msk].drop(columns='Games')
输出:
Player Position
1 Brock Holt 3B
2 Ben Zobrist OF
您也可以直接使用groupby和max,如下所示:
df.groupby(['Player']).max()
收益率:
Position Games
Player
Ben Zobrist OF 100
Brock Holt 3B 70