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

Pandas如何按分组筛选平均time值最低的algo对应记录

问题说明

现有如下结构的DataFrame:

import pandas as pd
df = pd.DataFrame([
    (2, 2, 'A', .5),
    (2, 2, 'A', .6),
    (2, 2, 'B', .75),
    (2, 2, 'B', .7),
    (2, 2, 'C', .6),
    (2, 3, 'A', .65),
    (2, 3, 'A', .6),
    (2, 3, 'B', .75),
    (2, 3, 'B', .7),
    (2, 3, 'C', .6)
], columns=['out_size', 'problem_size', 'algo', 'time'])

需要实现的逻辑:

  • 按out_size、problem_size划分数据组,每组内计算不同algo对应的time平均值
  • 每组仅保留平均time最低的algo对应的聚合结果
    预期输出为:
pd.DataFrame(
      [[2, 2, 'A', 0.55],
       [2, 3, 'C', 0.6]], columns=['out_size', 'problem_size', 'algo', 'time'])
实现代码

直接通过两次分组计算即可得到结果,无额外依赖:

# 先聚合计算每个维度+算法组合的平均耗时
mean_df = df.groupby(['out_size', 'problem_size', 'algo'], as_index=False)['time'].mean()
# 每个维度组筛选平均耗时最小的算法记录
res = mean_df.loc[mean_df.groupby(['out_size', 'problem_size'])['time'].idxmin()].reset_index(drop=True)

执行后res的输出和预期完全一致:

out_size  problem_size algo  time
0         2             2    A  0.55
1         2             3    C  0.60

如果需要保留原始的明细行而非聚合后的平均值,可以先拿到每个(out_size, problem_size)对应的最优algo映射,再和原表做等值匹配筛选即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:42:17