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

如何用spaCy提取CSV文本实体并关联源ID,解决pd.apply报错问题

问题排查与修复方案

报错原因

  • 变量名大小写错误:你在函数内定义文本变量为小写 text = row['text'],传入spaCy处理时错误写为大写 Text,Python区分变量大小写,直接触发未定义错误
  • apply参数缺失:pandas apply 方法默认按列遍历数据,你要实现按行处理逻辑,必须补充 axis=1 参数,否则函数会拿到整列数据,无法通过row['id']/row['text']取单行值

修正后可运行代码

import pandas as pd
import spacy

df = pd.read_csv(r'data/test_data.csv')
# 若未安装对应荷兰语模型,可先运行 python -m spacy download nl_core_news_lg
nlp = spacy.load("nl_core_news_lg")
ner_entities = []

def get_entities(row):
    entity_id = row['id']
    text = row['text']
    doc = nlp(text)
    for ent in doc.ents:
        ner_entities.append([entity_id, ent.text, ent.label_])

# 补充axis=1指定按行遍历
df.apply(lambda row: get_entities(row), axis=1)
ner_df = pd.DataFrame(ner_entities, columns=['id', 'ent', 'label'])
# 若需要保留原文本等其他字段可执行merge,无需保留直接用ner_df即可
merged_df = pd.merge(df, ner_df, on='id', how='outer')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:02