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

如何将spaCy生成的spacy.tokens.doc.Doc存入Pandas DataFrame?

解决方法

你的问题出在两个核心点:一是误用了pd.DataFrame.add()(这是用于数据帧算术相加的方法,并非添加行的工具);二是直接将spacy.tokens.doc.Doc对象传入DataFrame,这类对象需要先转换为字符串才能被DataFrame识别。

正确的做法是先把所有生成的文本收集到列表中,最后一次性转换为DataFrame,这种方式不仅避免报错,运行效率也更高:

  • 初始化一个空列表存储生成的文本
  • 循环中将每个Doc对象通过doc.text(或str(doc))转换为字符串,追加到列表
  • 最后用列表直接创建DataFrame

修改后的完整代码

import spacy
import pandas as pd
import augmenty

nlp = spacy.load('en_core_web_sm')
# 初始化空列表存增强后的文本
augmented_texts = []
docs = nlp.pipe(df['Text'])
syn_augmenter = augmenty.load('random_synonym_insertion.v1', level=0.1)

for doc in augmenty.docs(docs, augmenter=syn_augmenter, nlp=nlp):
    # 将Doc对象转为字符串后加入列表
    augmented_texts.append(doc.text)

# 把列表转为DataFrame
newDataSet = pd.DataFrame({'Augmented_Text': augmented_texts})

进阶:保留原文本与增强文本的对应关系

如果需要同时存储原文本和生成的增强文本,可以这样写:

augmented_data = []
# 同时遍历原文本和增强后的Doc对象
for original_text, doc in zip(df['Text'], augmenty.docs(nlp.pipe(df['Text']), augmenter=syn_augmenter, nlp=nlp)):
    augmented_data.append({
        'Original_Text': original_text,
        'Augmented_Text': doc.text
    })

newDataSet = pd.DataFrame(augmented_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:18:38