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

如何在Pandas中按Mode分组后,将Indicator最值的对应列值展示在同一DataFrame?

问题与简便解决方案

需求说明

现有数据集通过以下代码按Mode列分组,仅提取了Indicator列的最大、最小值:

import pandas as pd
df = pd.read_csv(r'relative.csv')
Grouped = df.groupby('Mode')['Indicator'].agg(['max', 'min'])
print(Grouped)

需要将这些最值对应的其他列关联值一并展示在同一个DataFrame中,以下是两种简便实现方案:


方案1:通过索引定位拼接整行数据

利用idxmax()/idxmin()获取每个分组中Indicator最值对应的行索引,从原数据提取整行后合并:

import pandas as pd

df = pd.read_csv(r'relative.csv')

# 提取各分组Indicator最大值对应的整行,添加后缀区分
max_rows = df.loc[df.groupby('Mode')['Indicator'].idxmax()].add_suffix('_max')
# 提取各分组Indicator最小值对应的整行,添加后缀区分
min_rows = df.loc[df.groupby('Mode')['Indicator'].idxmin()].add_suffix('_min')

# 按Mode合并结果,整理索引
result = pd.merge(max_rows, min_rows, left_on='Mode_max', right_on='Mode_min', how='outer')
result = result.set_index('Mode_max').rename_axis('Mode')

print(result)

方案2:分组后直接提取最值行

通过groupby().apply()自定义函数,在每个分组内筛选出Indicator最大、最小的行并拼接:

import pandas as pd

df = pd.read_csv(r'relative.csv')

def extract_min_max(group):
    # 筛选分组内Indicator最大、最小的行
    max_row = group[group['Indicator'] == group['Indicator'].max()]
    min_row = group[group['Indicator'] == group['Indicator'].min()]
    # 添加类型标识区分最值
    max_row['value_type'] = 'max'
    min_row['value_type'] = 'min'
    return pd.concat([max_row, min_row])

# 应用函数并整理结果
result = df.groupby('Mode', group_keys=False).apply(extract_min_max)
# 可根据需求重置索引或调整列顺序
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:22:18