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

如何删除Pandas DataFrame中ID列的重复内容?

解决Pandas DataFrame中ID列去重问题

问题描述

现有如下DataFrame:

import pandas as pd
df3 = pd.DataFrame({'ID': ['Stay home, T5006, T5006, Stay home', 'Go for walk, T5007, T5007, Go for walk'],
                    'Name': ['Stay home, Go for walk,  Stay home', 'Go outside, Go outside, Go outside']
                    })

对应的表格:

IDName
0Stay home, T5006, T5006, Stay homeStay home, Go for walk, Stay home
1Go for walk, T5007, T5007, Go for walkGo outside, Go outside, Go outside

需要删除ID列中的重复内容,得到预期结果:

IDName
0Stay home,T5006Stay home, Go for walk, Stay home
1Go for walk,T5007Go outside, Go outside, Go outside

解决方法

可以通过apply方法结合字符串分割、去重、合并来实现:

# 定义处理函数:分割字符串、去除空格、去重、合并
def remove_duplicates(s):
    # 按逗号分割,去除每个元素的前后空格
    items = [item.strip() for item in s.split(',')]
    # 去重并保留首次出现的顺序
    unique_items = list(dict.fromkeys(items))
    # 用逗号拼接成字符串
    return ','.join(unique_items)

# 对ID列应用处理函数
df3['ID'] = df3['ID'].apply(remove_duplicates)

执行后查看结果:

print(df3)

输出:

ID                                  Name
0     Stay home,T5006     Stay home, Go for walk,  Stay home
1  Go for walk,T5007   Go outside, Go outside,  Go outside

说明

  • dict.fromkeys(items)在去重的同时能保留元素首次出现的顺序,比set更适配需要维持原有顺序的场景。
  • strip()用于清除每个元素前后的空格,避免因空格导致的“伪重复”(比如"Stay home"和" Stay home"被误判为不同内容)。
  • 若无需保留顺序,也可以用list(set(items))替代,但元素顺序会被打乱,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:35:20