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

遍历字典并为DataFrame新增列:值匹配对应键的问题及解决

字典多值匹配DataFrame列并填充对应键的问题解决

问题背景

我有一个字典,每个键对应多个用|分隔的值:

my_dict = {
    'key1':'val1(ex1)|val2',
    'key2':'val3 (ex2)|val4',
    'key3':'val5',
    'key4':'val6|val7|val8|val9'
}

现有一个DataFrame,其中一列包含上述字典中的值,需求是遍历该列所有行,将值与字典中的值匹配后,把对应键填入DataFrame的新列。

最初尝试的问题

最初使用如下循环:

for key, val in my_dict.items():
    df.loc[(df['Values'].str.contains(val)),'new_col'] = key

这个方法部分有效,但存在匹配失败的情况,尤其是值包含括号(如val1(ex1))时。另外尝试将字典值转为列表时,出现了列表不可哈希的错误。

解决方法

发现问题出在str.contains(val)的匹配逻辑上,于是将字典的值拆分为独立元素的列表(按|分隔符拆分):

my_dict = {
    'key1':['val1(ex1)', 'val2'],
    'key2':['val3 (ex2)', 'val4'],
    'key3':['val5'],
    'key4':['val6','val7','val8','val9']
}

然后修改循环为逐个值精确匹配:

for key, vals in my_dict.items():
    for val in vals:
        df.loc[(df['Values'] == val), 'new_col'] = key

此方法解决了匹配失败的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:05:01