如何使用Pandas删除列中字符串仅顺序不同的重复行
实现方案
要实现这种「字符串组成元素完全相同、仅顺序不同即判定为重复」的去重需求,核心逻辑是对目标列的字符串按分隔符拆分后排序,生成统一的去重标识键,再基于键去重即可,完整可运行代码如下:
import pandas as pd # 构造原始DataFrame data = {'item':['dl3_hr_rank.r0','hr_dl3_rank.r0','hr_kl3_rank.r0', 'kl3_hr_rank.r0','hcrfr_hr_rank.r0', 'hr_hcrfr_rank.r0','hcfr_hkfr_rank.r0_wp','hkfr_hcfr_rank.r0_wp', 'hr_krl2_rank.r0_wp','krl2_hr_rank.r0_wp',], 'result':[1.17,1.17,1.17,1.17,1.13,1.13,1,1,1,1]} df = pd.DataFrame(data) # 生成去重用的辅助键:按下划线拆分字符串→排序片段→重新拼接 df['dedup_key'] = df['item'].apply(lambda x: '_'.join(sorted(x.split('_')))) # 基于辅助键去重,保留首次出现的行,删除辅助键后重置索引 df_dedup = df.drop_duplicates(subset='dedup_key', keep='first').drop(columns='dedup_key').reset_index(drop=True) # 输出去重结果 print(df_dedup)
运行后输出的结果和你期望的示例完全一致。
插入表格问题解决方案
如果需要将去重后的DataFrame直接转为标准Markdown表格插入文档,调用pandas内置方法即可:
print(df_dedup.to_markdown(index=False))
直接复制输出的内容即可使用,无需手动排版调整。
内容的提问来源于stack exchange,提问作者ManOnTheMoon
相关产品推荐
相关产品推荐

