尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
影刀RPA 数据去重策略:多维度去重
影刀RPA 数据去重策略多维度去重作者林焱什么情况用什么采集数据时有重复——同一个商品被采集了两次、同一条订单在合并时重复了、联系人有多个版本需要合并去重。简单的drop_duplicates()只能处理完全相同的行但实际场景中需要按部分列去重、保留最新记录、合并不同字段的信息。适用场景采集数据去重、多源数据合并去重、联系人信息合并、订单数据去重、日志去重。怎么做基础去重拼多多店群自动化上架方案importpandasaspd dfpd.read_excel(rC:\Data\raw_data.xlsx)# 1. 完全相同的行去重保留第一条df_uniquedf.drop_duplicates()# 2. 按指定列去重df_uniquedf.drop_duplicates(subset[订单ID])# 3. 保留最后一条如果有更新df_uniquedf.drop_duplicates(subset[订单ID],keeplast)# 4. 去重后保留所有重复行用于检查duplicatesdf[df.duplicated(subset[订单ID],keepFalse)]duplicates.to_excel(rC:\Data\duplicates_check.xlsx,indexFalse)按业务规则去重defdeduplicate_by_rule(df,key_col,sort_colNone,keeplast): 按业务规则去重 key_col: 去重依据列 sort_col: 排序列保留最新/最大的 keep: first或last ifsort_col:# 先按时间排序再去重保留最新dfdf.sort_values(sort_col,ascendingFalse)df_uniquedf.drop_duplicates(subsetkey_col,keepkeep)returndf_unique.reset_index(dropTrue)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e07606f62f344c288b2167b1a8a74c22.png#pic_center)# 使用按订单ID去重保留更新时间最新的df_cleandeduplicate_by_rule(df,key_col订单ID,sort_col更新时间,keepfirst# 排序后第一条就是最新的)print(f去重前:{len(df)}行 → 去重后:{len(df_clean)}行)print(f删除:{len(df)-len(df_clean)}条重复)多字段去重# 按姓名手机号组合去重df_uniquedf.drop_duplicates(subset[姓名,手机号])# 按姓名手机号邮箱三字段组合去重df_uniquedf.drop_duplicates(subset[姓名,手机号,邮箱])# 模糊匹配去重手机号格式不一但同一个人defnormalize_for_dedup(df,columns):标准化字段用于去重forcolincolumns:ifcol手机号:df[f{col}_std]df[col].astype(str).str.replace(r[^0-9],,regexTrue)elifcol邮箱:df[f{col}_std]df[col].astype(str).str.lower().str.strip()elifcol姓名:df[f{col}_std]df[col].astype(str).str.strip().str.replace( ,)std_cols[f{col}_stdforcolincolumns]df_uniquedf.drop_duplicates(subsetstd_cols)df_uniquedf_unique.drop(columnsstd_cols)returndf_unique# 使用df_cleannormalize_for_dedup(df,[姓名,手机号,邮箱])合并去重保留不同字段的信息defmerge_duplicates(df,key_col,merge_colsNone): 合并重复记录的不同字段信息 如记录A有手机号无邮箱记录B有邮箱无手机号合并后两者都有 ifmerge_colsisNone:merge_cols[cforcindf.columnsifc!key_col]merged_rows[]forkey_val,groupindf.groupby(key_col):iflen(group)1:merged_rows.append(group.iloc[0])else:# 合并多条记录![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9c30e64f45c94b0d8a3d43a064974a00.png#pic_center)merged{key_col:key_val}forcolinmerge_cols:# 取第一个非空值non_nullgroup[col].dropna()non_nullnon_null[non_null!]merged[col]non_null.iloc[0]iflen(non_null)0elseNonemerged_rows.append(merged)returnpd.DataFrame(merged_rows)# 使用df_mergedmerge_duplicates(df,key_col客户ID,merge_cols[姓名,手机号,邮箱,地址])去重报告defgenerate_dedup_report(df,key_col,output_path):生成去重报告totallen(df)uniquedf[key_col].nunique()duplicatestotal-unique report[]report.append(数据去重报告)report.append(*50)report.append(f\n总记录数:{total})report.append(f唯一{key_col}数:{unique})report.append(f重复记录数:{duplicates})report.append(f重复率:{duplicates/total*100:.2f}%)# 列出重复的记录dup_recordsdf[df.duplicated(subsetkey_col,keepFalse)]iflen(dup_records)0:report.append(f\n重复记录明细共{len(dup_records)}条:)dup_countsdup_records.groupby(key_col).size().sort_values(ascendingFalse)report.append(f 重复次数最多的前10个{key_col}:)forkey,countindup_counts.head(10).items():report.append(f{key}: 重复{count}次)withopen(output_path.replace(.xlsx,_report.txt),w,encodingutf-8)asf:f.write(\n.join(report))returnreport# 使用generate_dedup_report(df,订单ID,rC:\Data\dedup_result.xlsx)影刀RPA去重流程【读取Excel文件】→ 原始数据 【执行Python代码】→ 检查重复 打印重复数量和重复率 【执行Python代码】→ 去重 按订单ID去重保留更新时间最新的 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e82cb2a2c1a14a0fa3a436747071cd47.png#pic_center) 【执行Python代码】→ 生成去重报告 【写入Excel文件】→ 去重后数据 重复记录明细有什么坑坑1drop_duplicates修改了原数据TEMU店群如何管理运营# 问题drop_duplicates默认返回新DataFrame不改原数据df.drop_duplicates()# df没有变化# 正确dfdf.drop_duplicates()![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8dd90c56a0db4970a2f956d6ddd60801.png#pic_center)# 或df.drop_duplicates(inplaceTrue)坑2去重后索引不连续# 问题去重后索引跳号dfdf.drop_duplicates()print(df.index)# 0, 1, 3, 5, 7... 跳号# 解决重置索引dfdf.drop_duplicates().reset_index(dropTrue)坑3keepFalse和keepfirst’混淆# keepfirst默认保留第一条删除后续重复df.drop_duplicates(subset[ID])# 保留第一条# keeplast保留最后一条df.drop_duplicates(subset[ID],keeplast)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3bdd971d4db44e109f464076dbc87db1.png#pic_center)# keepFalse删除所有重复行包括第一条# 用于找出所有有重复的记录duplicatesdf[df.duplicated(subset[ID],keepFalse)]# 这个不是drop_duplicates是duplicated坑4大小写不同的重复# 问题Apple和apple被认为是不同的df.drop_duplicates(subset[产品名])# 不会去掉大小写不同的重复# 解决先标准化再去重df[产品名_std]df[产品名].str.lower().str.strip()dfdf.drop_duplicates(subset[产品名_std])dfdf.drop(columns[产品名_std])坑5多列去重时某列有空值# 问题空值和空值不算重复# 两行都是(张三, NaN)drop_duplicates认为不重复df.drop_duplicates(subset[姓名,邮箱])# 两行(张三, NaN)都保留了![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/53a5c1d422cf4e11808efc1f332424ab.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b71c252f345e4286ba4e103d787b9e7c.png#pic_center)# 解决空值填充统一值df[邮箱]df[邮箱].fillna(无邮箱)dfdf.drop_duplicates(subset[姓名,邮箱])
RELATED

相关推荐

网络连接模式:NAT模式

网络连接模式:NAT模式

宿主机内部创建一个私有网络和虚拟交换机(虚拟网桥,bridge),虚拟机获得私有网络的ip,并且都连接在这个虚拟交换机上;与桥接模式不同的,这个虚拟机交换机可见,且拥有独立ip地址&#…

📅 2026/9/12 9:38:06
【四旋翼飞行器】【模拟悬链机器人的动态】设计和控制由两个四旋翼飞行器推动的缆绳研究(Matlab代码实现)

【四旋翼飞行器】【模拟悬链机器人的动态】设计和控制由两个四旋翼飞行器推动的缆绳研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

📅 2026/9/10 14:37:30
深入操作系统 Socket 底层:EPOLLOUT 可写事件管理 + 非阻塞异步

深入操作系统 Socket 底层:EPOLLOUT 可写事件管理 + 非阻塞异步

EPOLLOUT 可写事件管理 非阻塞异步发送队列摘要:本文详细讲解如何在 Linux epoll 网络编程中,通过 EPOLLOUT 事件和应用层异步发送队列,实现高效的非阻塞异步数据发送,解决 TCP 内核缓冲区满时的 EAGAIN 问题,构建高并…

📅 2026/9/10 7:38:33
MORE NEWS

更多资讯

📰

数据摄取技术解析:构建高效可靠的数据管道

1. 数据摄取构建模块概述数据摄取(Data Ingestion)是现代数据架构中的基础环节,它负责将来自不同源头的数据高效、可靠地导入数据处理系统。作为数据流水线的第一公里,数据摄取的质量直接影响后续的数据分析、机器学习等环节的准确…

📰

Manim v0.18.0 版本发布解析:颜色系统重构、checkhealth 诊断命令与 LaTeX 清理等核心变更

Manim v0.18.0 版本发布解析:颜色系统重构、checkhealth 诊断命令与 LaTeX 清理等核心变更 【免费下载链接】manim A community-maintained Python framework for creating mathematical animations. 项目地址: https://gitcode.com/GitHub_Trending/man/manim …

📰

Mastra 仓库 PR 评审意见处理工作流:基于 gh CLI 与 CodeRabbit 的自动化回复规范

Mastra 仓库 PR 评审意见处理工作流:基于 gh CLI 与 CodeRabbit 的自动化回复规范 【免费下载链接】mastra Mastra is the modern TypeScript framework for AI-powered applications and agents. 项目地址: https://gitcode.com/GitHub_Trending/ma/mastra …

📰

AI Agent工程化必用uv:秒级确定性依赖管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

状态转换图:系统行为建模的核心工具与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

风电并网与15节点混合发电系统仿真实践

1. 风电并网与15节点混合发电系统概述风电并网技术是当前可再生能源领域的热点研究方向,而15节点混合发电系统则是研究这一技术的经典仿真平台。这个系统通常包含风电、光伏、传统火电等多种发电单元,通过合理的控制策略实现稳定并网运行。在实际工程中&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬