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

Pandas分组后如何返回每组指定列最大值对应的完整行DataFrame

分组提取MPG最大值对应整行的实现方案

问题原因

你当前的写法无法返回完整字段,核心存在两个问题:

  1. 调用方式错误:pd.groupby()是非法调用,groupby是pandas DataFrame/Series的实例方法,需要通过你的DataFrame对象(示例中假设命名为df)调用,即df.groupby()。
  2. 聚合逻辑错误:
    • df.groupby(["Company"])["MPG"].max() 仅对MPG列做最大值聚合,返回的是「分组-最大MPG值」的映射Series,不会携带Model、Year等其他字段。
    • 就算修正调用方式后写df.groupby(["Company"]).max(),也是对所有列独立取最大值,会出现不同行的字段拼接错位,比如可能拿到A组最大的Year、最大的Displ拼在一起,不是MPG最大的那条原始记录。

示例数据截图

可直接运行的正确代码

方案1:idxmax索引定位(全版本兼容,无错位风险)

通过idxmax()拿到每个分组MPG最大值对应的原始行索引,直接从原表取行,结果100%准确:

import pandas as pd

# 定位每个公司分组下MPG最高的行索引
max_mpg_rows = df.groupby("Company")["MPG"].idxmax()
# 提取完整行,重置索引
result = df.loc[max_mpg_rows].reset_index(drop=True)

方案2:排序后取分组首行(写法简洁)

先把全表按MPG降序排列,每个分组保留第一条记录,就是MPG最高的行:

result = df.sort_values("MPG", ascending=False).groupby("Company", as_index=False).head(1)

运行结果

两种方案输出完全匹配预期:

Company Model  Year   Trans  Displ   MPG
0       A    A2  2020    Auto    2.0  67.3
1       B    B4  2021  Manual    1.5  83.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:00:55