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

GroupBy分组后如何获取最大金额对应的完整行数据

解决方案

你可以通过以下几种方法获取分组中金额最高的完整记录:

方法一:利用idxmax定位索引后提取行

idxmax()会返回每个分组中amount列最大值对应的行索引,再用loc提取整行即可:

import pandas as pd
import numpy as np

# 原始DataFrame
df = pd.DataFrame({
    'Group': ['A', 'A', 'A'],
    'amount': [100, 120, 80],
    'uniqueID': ['A32', 'B33', 'C44'],
    'status': ['Success', 'Failed', 'Failed']
})

# 获取每个Group中amount最大的行索引
max_row_indices = df.groupby('Group')['amount'].idxmax()
# 根据索引提取对应行
result_df = df.loc[max_row_indices].reset_index(drop=True)
print(result_df)

输出结果就是你预期的DataFrame。

方法二:排序后取每组首行

先按Group分组,再按amount降序排序,最后取每组的第一行:

result_df = df.sort_values(by=['Group', 'amount'], ascending=[True, False]) \
              .groupby('Group') \
              .head(1) \
              .reset_index(drop=True)

这种方法逻辑直观,适合需要先查看分组排序结果的场景。

为什么你的原代码没拿到完整行?

你之前用的agg({'amount': [np.max]})只是对amount列做了聚合计算,没有关联uniqueID和status列,所以只能得到最大值,无法获取对应行的其他信息。通过索引定位整行的方式可以解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:30:55