如何提取pandas DataFrame重复行并关联其对应唯一行的原始索引
实现代码
你可以通过两个DataFrame按公共字段匹配合并的方式实现需求,核心代码如下:
# 把uniqueDF的原始索引转为普通列,命名为copyOf unique_idx_map = uniqueDF.reset_index(names='copyOf') # 按name、subject、marks三个字段匹配,将对应索引合并到duplicateDF duplicateDF = duplicateDF.merge(unique_idx_map, on=['name', 'subject', 'marks'], how='left').set_index(duplicateDF.index)
输出验证
执行后duplicateDF的结果和你预期完全一致:
name subject marks copyOf 4 Robert Maths 98 3 10 Lucifer English 98 9
逻辑说明
reset_index(names='copyOf')会把uniqueDF自带的原始索引(也就是你需要的对应行原始编号)转为普通列,避免匹配时丢失索引信息- 合并时用三个公共字段作为匹配键,保证重复行和唯一行的对应关系完全准确
- 最后用
set_index(duplicateDF.index)保留重复行原本的索引值,和你原来的输出格式一致
内容的提问来源于stack exchange,提问作者Inamullah
相关产品推荐
相关产品推荐

