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

基于子字符串匹配条件填充Pandas空列的报错问题求助

问题原因
  • 核心错误是字典访问逻辑完全错位:cat_type_dic的键是需要匹配的职位名字符串(比如'Analytics'),但你循环中用df的行索引整数i去访问字典cat_type_dic[i],自然会触发非整数键的索引报错。
  • df.loc["Job_Title"]语法错误:loc的第一个参数是行索引,要取指定行的Job_Title列应该写df.loc[i, "Job_Title"]。
  • 赋值逻辑错误:你直接对整个df["Categories"]列操作,就算匹配成功也会覆盖全列,而非仅修改匹配到的行,且str.replace完全不符合填充分类的需求。
解决方案

推荐优先使用Pandas向量化操作,性能远高于逐行循环,实现代码如下:

# 先初始化Categories列为空字符串或默认分类
df["Categories"] = ""

# 遍历分类映射字典的键值对
for keyword, category in cat_type_dic.items():
    # 匹配Job_Title包含当前关键词的行,填充对应分类
    df.loc[df["Job_Title"].str.contains(keyword, case=False, na=False), "Categories"] = category

补充说明:str.contains的case=False参数表示不区分大小写匹配,na=False表示遇到空值的Job_Title直接返回不匹配,避免报错。

如果要保留逐行循环的写法,修正后的代码如下:

for i in range(len(df)):
    # 取当前行的职位名称
    job_title = df.loc[i, "Job_Title"]
    # 遍历字典匹配关键词
    for keyword, category in cat_type_dic.items():
        if keyword in str(job_title):
            df.loc[i, "Categories"] = category
            # 匹配到第一个关键词就跳出,避免多个关键词匹配冲突,不需要可以去掉
            break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:04