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

Python中将pandas DataFrame列转为列表做NER提取后ID重复如何解决?

问题根源

  • 遍历逻辑错误:你只遍历了text列的文本值,没有关联每行对应的id,代码里append的df.id是整个id列的Series对象,因此每条NER结果里的id都会带上所有行的id,就是你看到的拼接重复问题。
  • 语法&命名错误:df['text'].tolis(() 应为 df['text'].tolist(),内层循环的变量名tags和外层存储结果的列表重名,会触发变量覆盖,导致逻辑异常。
  • 方法拼写错误:pandas没有DataFrame_from_records这个写法,正确是pd.DataFrame.from_records,也可以直接把结果列表传入pd.DataFrame构造。

修复后的代码

tags = []
# 同时遍历每行对应的id和text内容
for row_id, text in zip(df["id"], df["text"]):
    tdoc = nlp(text)
    # 内层循环变量改用ent,避免和外层tags列表重名
    for ent in tdoc.ents:
        tags.append((row_id, ent.text, ent.label_))

# 直接构造DataFrame即可
df_tag = pd.DataFrame(tags, columns = ["id", "name", "type"])

运行上述代码后就能得到id和对应NER结果匹配的预期输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:30:01