如何使用Python pandas为Excel表格内的重复记录添加标识?
pandas批量标记Excel重复记录实现方案
问题背景
- 现有存储学生信息的Excel文件,原始表内容如下:
'Born Date Student Name Duplicate 2001-01-01 Tommy 2001-03-04 Annie 2001-05-13 Billy 2001-07-31 Bob 2001-03-04 Annie 2001-04-04 Janet 2001-11-05 Betty 2001-12-15 Lucy 2001-08-25 Nicky 2001-12-15 Lucy 2001-07-31 John
- 需求:所有存在重复的记录,统一在
Duplicate列标注Yes,非重复记录该列留空,期望输出效果如下:
Born Date Student Name Duplicate 2001-01-01 Tommy 2001-03-04 Annie Yes 2001-05-13 Billy 2001-07-31 Bob 2001-03-04 Annie Yes 2001-04-04 Janet 2001-11-05 Betty 2001-12-15 Lucy Yes 2001-08-25 Nicky 2001-12-15 Lucy Yes 2001-07-31 John
- 当前已编写的初始代码:
import pandas as pd df = pd.read_excel('C:/Users/Desktop/Studen List.xlsx') dc = df.duplicated() print(dc)
现有代码问题
df.duplicated()默认参数keep='first',只会将重复项中除第一条出现的记录标记为True,无法实现所有重复条目都被标记的需求- 未指定判断重复的列范围,默认会按所有列判断,表中空值的
Duplicate列会干扰重复判断逻辑 - 识别出的重复布尔结果没有赋值回
Duplicate列,也没有做值映射
完整可运行代码
import pandas as pd # 读取原始Excel文件 df = pd.read_excel('C:/Users/Desktop/Studen List.xlsx') # 按出生日期、姓名两个核心字段识别重复,keep=False表示所有重复项均标记为True is_duplicate = df.duplicated(subset=['Born Date', 'Student Name'], keep=False) # 给重复行的Duplicate列赋值Yes df.loc[is_duplicate, 'Duplicate'] = 'Yes' # 将处理后的结果保存为新Excel文件,不需要可注释该行 df.to_excel('C:/Users/Desktop/Student_List_Processed.xlsx', index=False) # 打印结果校验 print(df)
关键参数说明
subset=['Born Date', 'Student Name']:指定仅通过出生日期、学生姓名两个字段判断是否重复,排除空的Duplicate列对判断逻辑的干扰keep=False:只要某条记录存在和其他记录字段匹配的重复情况,无论出现顺序,全部标记为重复,完全匹配需求df.loc[is_duplicate, 'Duplicate'] = 'Yes':通过布尔索引定位所有重复行,对对应行的Duplicate列写入标记值
内容的提问来源于stack exchange,提问作者CHL
相关产品推荐
相关产品推荐

