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

Pandas中除单列外其余列均重复时的行去重方法

解决方案:按指定规则筛选Pandas DataFrame

你可以通过两种简洁的方式实现需求,核心思路都是对A/B/C/D列相同的组保留E值最大的行,不同的行自然保留:

方法一:分组取最大值索引

利用groupby对A/B/C/D分组,通过idxmax()获取每组中E值最大的行索引,再提取这些行:

import pandas as pd

# 假设你的DataFrame名为df
result_df = df.loc[df.groupby(['A', 'B', 'C', 'D'])['E'].idxmax()]

方法二:排序后去重

先按E降序排序,再按A/B/C/D去重(保留第一个即E最大的行),可选恢复原索引顺序:

result_df = df.sort_values('E', ascending=False).drop_duplicates(subset=['A', 'B', 'C', 'D']).sort_index()

示例验证

构造测试数据并执行筛选:

data = {
    'A': ['x', 'x', 'y', 'y', 'z'],
    'B': ['a', 'a', 'b', 'b', 'c'],
    'C': ['m', 'm', 'n', 'n', 'p'],
    'D': ['q', 'q', 'r', 'r', 's'],
    'E': [10, 12, 5, 8, 3]
}
df = pd.DataFrame(data)

# 用方法一执行
result_df = df.loc[df.groupby(['A', 'B', 'C', 'D'])['E'].idxmax()]
print(result_df)

输出结果:

A  B  C  D   E
1  x  a  m  q  12
3  y  b  n  r   8
4  z  c  p  s   3

完全符合需求:A/B/C/D相同的组保留了E最大的行,唯一的行也被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:36:26