尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/10/7 7:44:47
深入操作系统 Socket 底层:EPOLLOUT 可写事件管理 + 非阻塞异步

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

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

📅 2026/9/17 15:43:58
2 Class文件结构

2 Class文件结构

1. 基础概念 1.1 什么是字节码 1.Java 源码 .java经过 javac编译器编译后,生成 .class 字节码文件 2.字节码不是机器码:不能直接给操作系统 CPU 执行,只能被JVM(Java 虚拟机) 解析执行 3.字节码:**二进制文…

📅 2026/10/8 7:55:58
MORE NEWS

更多资讯

📰

Paperclip:面向前端工程师的轻量级AI Agent开发框架

1. 项目概述:Paperclip 不是回形针,而是一个被低估的 AI Agent 开发范式你搜“paperclip”时,第一反应可能是办公桌上那个银色小金属件——但最近在 Node.js 和 React 开发者圈子里,这个词正悄悄切换语义,变成一个高频…

📰

反向技能:从成品拆解到快速掌握新技术——以二维码工具为例

1. 先理解 reverse-skill:正向学习为什么累,反向学习为什么快 前阵子接手一个内部工具,要在一周内把一个“批量二维码生成器”从零做出来。按照我以往的习惯,肯定先去翻官方文档,把 qrcode 库的 API 从头到尾读一遍&am…

📰

Openclaw龙虾处理设备安全卸载与回收指南

1. 项目背景与核心需求Openclaw作为一款专业级龙虾处理工具,在海鲜加工行业已经服役超过5年。这款设备以其独特的双钳式设计闻名,能够精准模拟人类手部动作完成龙虾的抓取、固定和分拣操作。但随着设备老化以及新型号上市,不少餐饮企业和水产…

📰

Elastic Beats五大采集器原理与生产实践指南

1. Beats不是“一个工具”,而是五种数据采集器的协同作战体系很多人第一次接触Elastic Stack时,看到Beats这个词,下意识会把它当成Logstash那样的“单体采集器”——装一个包、配一个yml、跑起来就完事。我最早在某高校实验室做日志平台迁移时…

📰

算力拐点:强化学习、GRPO与蒸馏如何降低推理模型成本

简介:这份PDF研究报告由甲子光年智库于2025年2月发布,围绕DeepSeek引发的算法与算力效率变革展开,面向关注AI技术走向的研究人员、工程师、政策制定者以及创业者与投资者。报告从人工智能由技术驱动转向需求驱动的战略拐点切入,梳…

📰

LC选频网络与谐振回路:Q值、通频带及阻抗匹配解析

简介:这份PPT面向电子工程、通信类课程学习者及需要复习高频电路基础的读者,围绕选频网络中的串联谐振回路展开,适合课堂讲授、考前梳理与知识点查漏。内容从单振荡回路的谐振特性切入,依次讲解谐振频率、阻抗与电流相位关系、品质…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬