Pandas Group By,Aggregate,然后返回不同的列



我有一个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

最新更新