You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Pandas groupby输出每个赛季count最高的完整行数据?

获取每个赛季count值最高的完整行数据

我来帮你搞定这个问题!你目前的代码只提取了每个赛季的最大count值,但没有保留对应的整行数据,这里有几种实用的方法可以实现你的需求:

方法1:使用idxmax() + loc定位目标行

这个方法会先找到每个赛季中count值最大的行的索引,再通过索引提取完整的行数据:

# 获取每个赛季count最大值对应的行索引
max_count_indices = seasonal_name.groupby("season")["count"].idxmax()
# 根据索引提取包含所有列的完整行
result = seasonal_name.loc[max_count_indices]

注意:如果同一个赛季中有多行的count值都是最大值,这个方法只会保留每组中第一个出现的最大值行。

方法2:使用transform()筛选匹配行

这个方法会给每行标记出对应赛季的count最大值,再筛选出count等于该最大值的行:

# 新增一列,存储当前赛季的count最大值
seasonal_name['max_count_in_season'] = seasonal_name.groupby("season")["count"].transform('max')
# 筛选出count等于赛季最大值的行,并删除临时列
result = seasonal_name[seasonal_name['count'] == seasonal_name['max_count_in_season']].drop(columns='max_count_in_season')

优势:如果同一个赛季存在多个count值并列最大的行,这个方法会把这些行全部保留下来。

方法3:排序后去重

先按赛季分组,每组内按count降序排序,再保留每个赛季的第一行:

# 按赛季升序、count降序排序,然后去除每个赛季的重复行(保留第一行)
result = seasonal_name.sort_values(['season', 'count'], ascending=[True, False]).drop_duplicates(subset='season')

这个方法逻辑直观,同样如果有多个最大值行,会保留排序后最先出现的那一行。

用你的示例数据测试的话,方法1和方法3都会返回2008/2009赛季中count=28的曼联那一行,包含所有列的完整数据。

内容的提问来源于stack exchange,提问作者mahmoudamintaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:50:23