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

Pandas操作:列值包含字典值任意项时将对应键作为标签新增列

实现方案

你没有把问题想复杂,核心逻辑只需要两步:先把每行的产品字符串拆成集合,再和映射字典每个分类下的产品列表做交集判断,有交集就保留对应分类标签即可。

以下是可直接运行的代码实现:

import pandas as pd

# 原始数据
df = pd.DataFrame({'products' : ['a,b,c', 'a,c', 'b,d','a,b,c']})
mydict = {'good':['a'],'bad':['d'],'neutral':['b','c','a']}

# 预转集合提升判断效率(可选,数据量小时可以省略)
category_map = {k: set(v) for k, v in mydict.items()}

def get_labels(product_str):
    product_set = set(product_str.split(','))
    res = []
    for cate, p_list in category_map.items():
        # 存在交集就添加对应分类标签
        if product_set & p_list:
            res.append(cate)
    return ','.join(res)

df['quality'] = df['products'].apply(get_labels)

如果追求更简洁的写法,也可以把逻辑压缩成一行,可读性稍差但功能一致:

df['quality'] = df['products'].apply(lambda x: ','.join([k for k,v in mydict.items() if set(x.split(',')) & set(v)]))

两种写法运行后得到的结果都和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:36:06