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

如何在DataFrame中按layer和FP_part分组获最小accuracy并保留idx列?

问题与解决方案

原始数据

我有如下DataFrame:

layer   idx FP_part     accuracy
    conv2d  0   Mantissa    0.683099
    conv2d  1   Mantissa    0.683099
    conv2d  2   Mantissa    0.683099
    conv2d  3   Mantissa    0.683099
    conv2d  4   Mantissa    0.683099
    conv2d  0   Mantissa    0.683099
    conv2d  1   Exponent    0.683099
    conv2d  2   Exponent    0.683099
    conv2d  3   Exponent    0.683099
    conv2d  4   Exponent    0.683099
    dense_2 0   Mantissa    0.682965
    dense_2 1   Mantissa    0.682836
    dense_2 2   Mantissa    0.682940
    dense_2 3   Mantissa    0.416586
    dense_2 4   Mantissa    0.682983
    dense_2 0   Exponent    0.682965
    dense_2 1   Exponent    0.682836
    dense_2 2   Exponent    0.682940
    dense_2 3   Exponent    0.416586
    dense_2 4   Exponent    0.682983

需求与问题

我需要按layer和FP_part分组,获取每组的最小accuracy值,同时保留对应的idx列。但尝试下面的代码后,idx列被移除了:

df_wim = df_w.groupby(['layer',"FP_part"])['accuracy'].min().reset_index()

解决方案

方法1:用idxmin()定位最小行

直接找到每组中accuracy最小的行索引,再提取整行数据,这样就能保留所有列:

# 获取每组accuracy最小值对应的行索引
min_row_indices = df_w.groupby(['layer', 'FP_part'])['accuracy'].idxmin()
# 根据索引提取行,重置索引
df_wim = df_w.loc[min_row_indices].reset_index(drop=True)

方法2:计算最小值后合并回原表

先算出每组的最小accuracy,再通过合并匹配到对应行:

import pandas as pd

# 计算每组的最小accuracy
grouped_min = df_w.groupby(['layer', 'FP_part'])['accuracy'].min().reset_index()
# 合并原表,保留对应idx,去重(避免同组多个最小值行重复)
df_wim = pd.merge(df_w, grouped_min, on=['layer', 'FP_part', 'accuracy']).drop_duplicates()

方法3:用transform标记最小值行

给每行标记是否为本组的accuracy最小值,再筛选出这些行:

# 标记每行是否是本组的accuracy最小值
df_w['is_min_accuracy'] = df_w.groupby(['layer', 'FP_part'])['accuracy'].transform(lambda x: x == x.min())
# 筛选标记为True的行,删除辅助列并重置索引
df_wim = df_w[df_w['is_min_accuracy']].drop('is_min_accuracy', axis=1).reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:19