You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需networkx,按索引值对Pandas数据集去重的更Pythonic方法

解决方案

针对你需要按索引(id)分组,保留每个组内code唯一值的需求,这里提供几个更简洁、Pythonic的实现方式:

方案1:利用groupby + unique + explode

直接按索引分组,提取每组唯一的code后展开,无需手动处理索引名称:

df = df.groupby(level=0)['code'].unique().explode().reset_index(name='code').set_index(df.index.name or 'index')
  • 逻辑清晰,直接对应“按id分组去重”的需求
  • 适配性强:无论索引是否有名称都能正常工作(df.index.name or 'index'处理无索引名的情况)

方案2:优化重置索引的写法

针对你原代码的痛点,优化后可兼容无索引名的场景:

temp_df = df.reset_index(drop=False)
result_df = temp_df.drop_duplicates().set_index(temp_df.columns[0])
  • 核心改进:用temp_df.columns[0]自动获取原索引对应的列名,无需手动指定,解决了索引无名称时的失效问题

方案3:直接生成唯一标识过滤(无需操作索引)

通过组合索引和code生成唯一标识,直接过滤重复项,完全不需要重置/设置索引:

# 生成由索引和code组成的唯一元组序列
unique_keys = pd.Series(list(zip(df.index, df['code'])))
# 过滤掉重复的项
df = df[~unique_keys.duplicated()]
  • 全程不改动索引结构,最贴合你“不应重置索引”的诉求
  • 原理:利用元组的可哈希性,将索引和code的组合作为去重依据,精准过滤每组内的重复code

内容的提问来源于stack exchange,提问作者Michael Tuchman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:37:27