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

如何在DataFrame中去重并保留columnE值为C的指定行

问题描述

现有如下DataFrame df:

columnA columnB columnC columnD columnE
A        B         10      C       C
A        B         10      D       A
B        C         20      A       A
B        A         20      D       A
B        A         20      D       C

需求:当columnA、columnB、columnC三列组合存在重复条目时,仅保留其中columnE等于C的行;无重复的行直接保留。最终期望输出:

columnA columnB columnC columnD columnE
A        B         10      C       C
B        C         20      A       A
B        A         20      D       C
实现方案

可以通过排序+去重的组合操作实现,两种写法供参考:

写法一:显式设置优先级列

import pandas as pd

# 构造示例DataFrame
data = {
    'columnA': ['A', 'A', 'B', 'B', 'B'],
    'columnB': ['B', 'B', 'C', 'A', 'A'],
    'columnC': [10, 10, 20, 20, 20],
    'columnD': ['C', 'D', 'A', 'D', 'D'],
    'columnE': ['C', 'A', 'A', 'A', 'C']
}
df = pd.DataFrame(data)

# 给columnE=C的行设置更高优先级(数值越小越靠前)
df['priority'] = df['columnE'].map({'C': 0, 'A': 1})
# 按目标列+优先级排序,让C行排在每组重复数据的最前面
df = df.sort_values(by=['columnA', 'columnB', 'columnC', 'priority'])
# 去重,保留每组第一行(即优先级最高的C行),最后删除临时优先级列
df_result = df.drop_duplicates(subset=['columnA', 'columnB', 'columnC'], keep='first').drop(columns='priority')

print(df_result)

写法二:简洁排序法(无需额外列)

import pandas as pd

# 构造示例DataFrame
data = {
    'columnA': ['A', 'A', 'B', 'B', 'B'],
    'columnB': ['B', 'B', 'C', 'A', 'A'],
    'columnC': [10, 10, 20, 20, 20],
    'columnD': ['C', 'D', 'A', 'D', 'D'],
    'columnE': ['C', 'A', 'A', 'A', 'C']
}
df = pd.DataFrame(data)

# 按目标列排序,同时对columnE降序(C的字典序大于A,降序后C排在前面)
# 然后去重保留每组第一行
df_result = df.sort_values(by=['columnA', 'columnB', 'columnC', 'columnE'], ascending=[True, True, True, False]) \
              .drop_duplicates(subset=['columnA', 'columnB', 'columnC'], keep='first')

print(df_result)
验证结果

两种写法输出的结果均与期望一致:

columnA columnB  columnC columnD columnE
0       A       B       10       C       C
2       B       C       20       A       A
4       B       A       20       D       C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:44:52