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

对数据表执行groupby后如何获取每个分组下值最大的对应行?

解法

你计算得到的是带有interval、stop_name双重索引的Series,按以下步骤操作即可得到目标结果:

  1. 先把分组求均值的结果存为变量,再转成DataFrame格式便于后续处理
# 先保存平均延迟计算结果
avg_delay = delays_with_stop_names.groupby(['interval','stop_name'])['delay'].mean()
  1. 任选以下任意一种方法提取每个interval的最高平均延迟记录:

方法1:groupby + idxmax(逻辑直观)

按interval分组后,直接取每组平均延迟最大值对应的行:

result = avg_delay.reset_index(name='avg_delay') \
                  .groupby('interval') \
                  .apply(lambda x: x.loc[x['avg_delay'].idxmax()]) \
                  .reset_index(drop=True)

方法2:排序 + 去重(执行效率更高)

先按interval升序、平均延迟降序排序,再按interval去重保留第一条记录即可:

result = avg_delay.reset_index(name='avg_delay') \
                  .sort_values(['interval', 'avg_delay'], ascending=[True, False]) \
                  .drop_duplicates('interval', keep='first') \
                  .reset_index(drop=True)
  1. 调整格式并输出你需要的样式:
# 把平均延迟转为整数
result['avg_delay'] = result['avg_delay'].astype(int)
# 按要求格式打印
for _, row in result.iterrows():
    print(row['interval'], row['stop_name'], row['avg_delay'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:45:03