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

如何按DataFrame重复索引分组并保留指定列最大值所在行

保留重复索引下指定列最大值对应的整行数据

要实现按重复索引分组,保留每个组内列"C"值最大的完整行,可以用以下两种简洁方法:

方法一:利用idxmax()定位后提取

先通过groupby找到每个索引组内列"C"最大值对应的行标签,再用loc提取整行数据:

# 获取每个索引组中C列最大值对应的行标签
max_row_labels = df.groupby(df.index)['C'].idxmax()
# 提取对应整行数据
result_df = df.loc[max_row_labels]

也可以合并为一行代码:

result_df = df.loc[df.groupby(df.index)['C'].idxmax()]

方法二:用apply直接筛选分组内目标行

如果需要处理组内存在多个C列最大值的情况(比如想保留所有最大值行,或只取第一行),可以用apply:

# 保留组内所有C列最大值的行
result_df = df.groupby(df.index).apply(lambda group: group[group['C'] == group['C'].max()])

# 若只保留每个组内第一个C列最大值的行
result_df = df.groupby(df.index).apply(lambda group: group[group['C'] == group['C'].max()].iloc[0])

为什么你之前的方法不符合需求?

  • df.groupby(df.index).max():会对每个列单独提取最大值,导致不同行的字段被混合拼接,破坏了行数据的完整性。
  • df.groupby(df.index)['C'].max():仅保留分组后C列的最大值,直接丢弃了其他列的信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:16:02