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

Python中通过匹配id列指定关键词为新增列赋值的实现方法

实现方案

首先你需要先补全你定义的映射字典,加入dis-dd对应的映射值:

keyword_map = {
    'see-dd': 14,
    'sal-led': 8,
    'dis-dd': 5
}

方案1:使用pandas处理(推荐用于表格类数据集)

适合数据量较大、后续需要做更多数据处理的场景

写法1:apply自定义函数(可读性高)

import pandas as pd

# 构造样例数据,实际使用时替换为pd.read_csv(你的文件路径)读取即可
df = pd.DataFrame({
    'id': ['see-dd-2333', 'see-dd-aaaaa', 'sal-led-sss', 'sal-led-sss', 'dis-dd-red'],
    'status': ['y', 'y', 'y', 'n', 'n']
})

def match_pw(id_str):
    for kw, val in keyword_map.items():
        if kw in id_str:
            return val
    # 无匹配时的默认返回值可根据需求修改,比如返回0或None
    return None

df['pw'] = df['id'].apply(match_pw)

写法2:正则提取映射(性能更高,适合十万行以上大数据集)

import pandas as pd

# 拼接关键词为正则匹配模式
pattern = '|'.join(keyword_map.keys())
# 提取id中包含的目标关键词
df['matched_kw'] = df['id'].str.extract(f'({pattern})', expand=False)
# 映射得到pw值
df['pw'] = df['matched_kw'].map(keyword_map)
# 删除临时生成的关键词列
df = df.drop('matched_kw', axis=1)

处理完成后可以直接用print(df)查看结果,或用df.to_csv('output.csv', index=False)保存为文件,输出结果完全符合你的预期。

方案2:纯Python实现(无第三方依赖,适合小文件处理)

# 读取输入文件,替换为你自己的文件路径即可
with open('input.txt', 'r', encoding='utf-8') as f:
    lines = [i.strip() for i in f if i.strip()]

# 处理表头
output = ['\t'.join(lines[0].split() + ['pw'])]

# 逐行匹配
for line in lines[1:]:
    id_val, status = line.split()
    pw = None
    for kw, val in keyword_map.items():
        if kw in id_val:
            pw = val
            break
    output.append(f"{id_val}\t{status}\t{pw}")

# 写入结果文件
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('\n'.join(output))

注意事项

  • Python 3.7及以上版本字典默认保留插入顺序,如果一个id可能匹配多个关键词,把优先级高的关键词放在字典前面即可
  • 如果关键词包含正则特殊字符(如.、*、+等),使用正则提取方案前需要先用re.escape()对每个关键词做转义
  • 无匹配场景的返回值可以根据业务需求自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:06