如何在 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 又是重复项”的行,再取反筛选

具体步骤如下:

  1. 识别目标行:df.ID.eq(1) → 返回 True 仅当 ID 等于 1;
  2. 识别所有 ID 列的重复行(按首次出现保留原则):df.duplicated(subset=['ID']) → 对 ID 列标记从第二次出现起的所有重复行为 True;
  3. 组合条件:用 &(逻辑与)连接二者,得到仅对 ID==1 的重复行生效的掩码;
  4. 反向筛选:用 ~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请求教程  ,在苏州找工作,上哪个网站比较好?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】