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

从DataFrame按Group+Setting分组提取Runtime最小的行

按Group+Setting分组提取Runtime最小的行

要实现你需要的需求——对Group和Setting的组合分组,每个组合提取Runtime值最小的那一行,用Pandas可以用两种直观的方法来完成:

方法一:使用groupby+idxmin

这种方法通过分组找到最小值对应的行索引,再提取对应行,逻辑直接清晰:

import pandas as pd

# 假设你的原始DataFrame名为df
# 1. 按Group和Setting分组,获取每个组中Runtime最小的行的索引
min_runtime_idx = df.groupby(['Group', 'Setting'])['Runtime'].idxmin()
# 2. 根据索引提取目标行,重置索引让结果更整洁
result_df = df.loc[min_runtime_idx].reset_index(drop=True)

说明:

  • groupby(['Group', 'Setting']):把数据按Group和Setting的唯一组合分成多个子组
  • ['Runtime'].idxmin():返回每个子组中Runtime值最小的那一行的原始索引
  • df.loc[min_runtime_idx]:通过索引定位到这些行,reset_index(drop=True)是为了去掉原有的索引,让结果的索引从0重新开始

方法二:排序后去重

如果更习惯用排序的思路,也可以先按分组字段和Runtime排序,再保留每个分组的第一行:

# 1. 先按Group、Setting排序,再按Runtime升序排列(小的在前)
sorted_df = df.sort_values(['Group', 'Setting', 'Runtime'])
# 2. 保留每个Group+Setting组合的第一行,也就是Runtime最小的行
result_df = sorted_df.drop_duplicates(subset=['Group', 'Setting'], keep='first').reset_index(drop=True)

说明:

  • sort_values会先按Group和Setting分组排序,再把每个组内的行按Runtime从小到大排列
  • drop_duplicates(subset=['Group', 'Setting'], keep='first'):对每个Group+Setting组合,只保留第一次出现的行(也就是Runtime最小的那一行)

针对你给出的示例数据,两种方法都会得到如下结果(保留所有列):

GroupSettingRuntimeMemorySomeOtherColumns
AX102105...
AY100104...
BX852...
BY1360...
CX56...
CY67...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:56:45