如何修改Pandas代码,按球队分组后将对应最高出场时长的球员名添加至每行
如何在Pandas中按组获取对应最大出场时长的球员名?
嘿,我来帮你搞定这个需求!你现在需要的是按球队分组后,把该队出场时间最长的球员名填充到每一行的新列里,而不是原来的最大时长数值。这里有两种简单好用的实现方法:
方法一:先定位每组最长时长的球员,再映射到原表
# 第一步:找出每支球队里出场时长最高的球员 max_player_per_team = df.groupby('Team')['Minutes played'].idxmax().apply(lambda idx: df.loc[idx, 'Player']) # 第二步:把球员名匹配到原DataFrame的每一行 df['count_max'] = df['Team'].map(max_player_per_team)
方法二:用transform直接在分组内生成结果
df['count_max'] = df.groupby('Team').transform( lambda group: group.loc[group['Minutes played'].idxmax(), 'Player'] )
简单解释下逻辑
- 方法一中,
idxmax()会返回每组里Minutes played数值最大的那一行的索引,我们用这个索引去原表中取出对应的球员名,最后通过map函数,把每个球队对应的球员名填充到原表的所有对应行里。 - 方法二更直接,用
transform遍历每个分组,在每个分组内部找到时长最长的球员,然后把这个名字自动填充到该分组的每一行,一步到位。
运行任意一种方法后,你都会得到想要的结果:
Team Player Minutes played count_max
1 a 2 b
1 b 10 b
1 c 0 b
2 a 28 b
2 b 50 b
2 e 7 b
3 c 200 c
3 p 10 c
内容的提问来源于stack exchange,提问作者Stan75
相关产品推荐
相关产品推荐

