如何在 Pandas 中仅对指定 ID 值去重(保留首次出现,删除后续重复)
发布时间 - 2026-01-08 00:00:00 点击率:次本文介绍一种精准控制去重范围的方法:仅对 dataframe 中某一特定 id 值(如 id==1)删除其重复行,其余 id 值完全保留原样,不参与去重逻辑。
在实际数据处理中,我们常需“条件性去重”——并非全局去重,而是仅对满足某条件的子集执行去重操作。例如,给定如下 DataFrame:
import pandas as pd
df = pd.DataFrame({
'ID': [1, 2, 3, 1, 2, 3],
'Value': ['A', 'B', 'A', 'B', 'C', 'A']
})目标是:仅当 ID == 1 时,删除其后续重复项(即保留第一个 ID=1 的行,移除第二个 ID=1 的行),而 ID=2 和 ID=3 的所有行均完整保留(即使它们自身存在重复,也不处理)。
实现该逻辑的核心思路是:构造布尔掩码(boolean mask),精准定位“既是目标 ID 又是重复项”的行,再取反筛选。
具体步骤如下:
- 识别目标行:df.ID.eq(1) → 返回 True 仅当 ID 等于 1;
- 识别所有 ID 列的重复行(按首次出现保留原则):df.duplicated(subset=['ID']) → 对 ID 列标记从第二次出现起的所有重复行为 True;
- 组合条件:用 &(逻辑与)连接二者,得到仅对 ID==1 的重复行生效的掩码;
- 反向筛选:用 ~mask 保留非匹配行,即:保留所有非 ID=1 的行 + 保留 ID=1 的首次出现行。
完整代码如下:
mask = df.ID.eq(1) & df.duplicated(subset=['ID']) result = df[~mask].reset_index(drop=True) print(result)
输出结果为:
ID Value 0 1 A 1 2 B 2 3 A 3 2 C 4 3 A
✅ 注意事项:
- duplicated() 默认 keep='first',即首次出现为 False,后续重复为 True,这正符合“保留首个 ID=1”的需求;
- subset=['ID'] 明确限定去重依据列,避免误用其他列;
- 若需对多个指定 ID(如 [1, 3])统一去重,可改用 df.ID.isin([1, 3]) 替代 eq(1);
- 此方法不修改原 DataFrame,推荐用于链式操作或临时清洗场景。
该方案简洁、高效、可读性强,避免了 groupby 或循环等低效方式,是 Pandas 条件去重的典型范式。
# pandas
# Boolean
# 循环
# 首次
# 仅对
# 链式
# 掩码
# 也不
# 第一个
# 又是
# 多个
# 第二个
# 布尔
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
JS中对数组元素进行增删改移的方法总结
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
,南京靠谱的征婚网站?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
如何用景安虚拟主机手机版绑定域名建站?
Python并发异常传播_错误处理解析【教程】
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何在服务器上配置二级域名建站?
Laravel storage目录权限问题_Laravel文件写入权限设置
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
香港服务器WordPress建站指南:SEO优化与高效部署策略
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何挑选高效建站主机与优质域名?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
中山网站制作网页,中山新生登记系统登记流程?
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何记录自定义日志?(Log频道配置)
大连网站制作公司哪家好一点,大连买房网站哪个好?
中国移动官方网站首页入口 中国移动官网网页登录
Python图片处理进阶教程_Pillow滤镜与图像增强
Python数据仓库与ETL构建实战_Airflow调度流程详解
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
详解Huffman编码算法之Java实现
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
在Oracle关闭情况下如何修改spfile的参数
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在云指建站中生成FTP站点?
Linux网络带宽限制_tc配置实践解析【教程】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
linux top下的 minerd 木马清除方法
如何在Tomcat中配置并部署网站项目?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
如何用VPS主机快速搭建个人网站?
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
,在苏州找工作,上哪个网站比较好?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】


[~mask].reset_index(drop=True)
print(result)