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

DataFrame去重子串后unique_type列格式修正需求

去除DataFrame列中重复子串并生成无格式符号的字符串列

你的问题出在直接将集合对象赋值给了新列,Pandas会直接显示集合的字符串表示(带大括号和引号)。需要把去重后的结果转换成逗号分隔的普通字符串,同时处理空值和子串前后空格的问题,以下是可行方案:

解决代码

import pandas as pd

# 示例DataFrame
df_1 = pd.DataFrame({
    'product_type': ['bag,bag', 'tote bag,bag', '', 'handbag,handbag']
})

def process_unique_types(s):
    # 处理空值或空字符串
    if pd.isna(s) or s.strip() == '':
        return ''
    # 拆分字符串、去除每个子串的前后空格、过滤空内容
    parts = [part.strip() for part in s.split(',') if part.strip()]
    # 去重(若需保留原顺序,改用list(dict.fromkeys(parts)))
    unique_parts = list(set(parts))
    # 用逗号加空格拼接成字符串
    return ', '.join(unique_parts)

# 生成新列
df_1['unique_type'] = df_1['product_type'].apply(process_unique_types)

结果验证

执行后得到的DataFrame如下:

product_type    unique_type
0      bag,bag            bag
1  tote bag,bag  tote bag, bag
2                          
3  handbag,handbag      handbag

关键说明

  1. 处理空值/空字符串:避免生成{''}这类无效结果,直接返回空字符串
  2. 子串去空格:解决tote bag, bag中拆分后子串带空格的问题,保证去重准确
  3. 集合转字符串:用join方法将去重后的列表转换成逗号分隔的普通字符串,替代集合的默认格式
  4. 顺序保留可选:如果需要保持子串原来的出现顺序,把list(set(parts))替换为list(dict.fromkeys(parts)),因为集合会打乱元素顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:25:27