如何在 Pandas 中按行识别并提取重复值
发布时间 - 2026-01-21 00:00:00 点击率:次本文介绍如何使用 `pandas.dataframe.apply()` 配合自定义逻辑,高效实现**逐行检测重复值**,并以字符串或集合形式返回每行中出现频次大于 1 的所有元素。
在 Pandas 中,默认的 duplicated() 方法作用于列(即纵向),常用于标记或筛选列方向上的重复行;但当需求变为横向识别每行内部的重复值(例如:某一行中 "bar" 出现两次,则提取 "bar"),就需要转向 apply(axis=1) 的行级操作。
核心思路是:对每一行(Series 对象),统计各元素出现次数,筛选出频次 > 1 的值,并去重汇总。以下是推荐的实现方式:
import pandas as pd
df2 = pd.DataFrame({
"A": ["foo", "foo", "foo", "bar"],
"B": [0, 1, 1, 1],
"C": ["A", "foo", "B", "bar"],
"D": ["bar", "bar", "B", "foo"],
"E": ["bar", "bar", "B", "foo"]
})
# ✅ 推荐方案:返回 set(自动去重 + 无序),语义清晰且性能合理
df2["dup"] = df2.apply(
lambda row: {val for val in row if row.tolist().count(val) > 1},
axis=1
)输出结果为:
A B C D E dup
0 foo 0 A bar bar {bar}
1 foo 1 foo bar bar {foo, bar}
2 foo 1 B B B {B}
3 bar 1 bar foo foo {foo, bar}如需与示例中一致的逗号分隔字符串格式(如 "foo, bar"),可进一步转换:
df2["dup"] = df2["dup"].apply(lambda s: ", ".join(sorted(map(str, s))) if s else "")
⚠️ 注意事项:
- row.tolist().count(val) 在大数据集上效率较低(时间复杂度 O(n²)),若处理超万行数据,建议改用 collections.Counter 优化:
from collections import Counter df2["dup"] = df2.apply( lambda row: {val for val, cnt in Counter(row).items() if cnt > 1}, axis=1 ) - 混合数据类型(如 int 和 str)时,Counter 更健壮;而 == 比较在 NaN 存在时需额外处理(NaN != NaN),如含缺失值,建议先用 row.fillna("MISSING") 统一占位。
- 若需保留首次出现顺序,可用 dict.fromkeys(...) 去重后转 li
st,再过滤。
该方法灵活、可读性强,适用于探索性分析及清洗阶段的行级模式识别任务。
# 大数据
# app
# pandas
# 数据类型
# count
# 字符串
# int
# 对象
# 首次
# 两次
# 适用于
# 自定义
# 较低
# 并以
# 如需
# 再过
# 先用
# 如何使用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何在 React 中条件性地遍历数组并渲染元素
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
魔毅自助建站系统:模板定制与SEO优化一键生成指南
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
原生JS获取元素集合的子元素宽度实例
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Bootstrap整体框架之JavaScript插件架构
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
如何在Ubuntu系统下快速搭建WordPress个人网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
详解jQuery中基本的动画方法
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Linux系统运维自动化项目教程_Ansible批量管理实战
网站制作企业,网站的banner和导航栏是指什么?
高防服务器租用指南:配置选择与快速部署攻略
Firefox Developer Edition开发者版本入口
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
jQuery中的100个技巧汇总
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
iOS发送验证码倒计时应用
西安专业网站制作公司有哪些,陕西省建行官方网站?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何用搬瓦工VPS快速搭建个人网站?
Android滚轮选择时间控件使用详解
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel如何使用.env文件管理环境变量?(最佳实践)
教你用AI将一段旋律扩展成一首完整的曲子
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
WordPress 子目录安装中正确处理脚本路径的完整指南


