如何用更优雅的方式为Pandas DataFrame添加向量数组列?
解决方案
你直接通过iterrows循环赋值失败的原因是:pandas会默认将numpy数组拆解为单个元素,试图逐个填充到单元格中,而非将整个数组作为单一值存储。
下面是两种更优雅的实现方式:
方法1:使用Series.apply(简洁直观)
直接对Text列调用apply方法,一行代码完成转换与赋值,完全替代手动循环:
import pandas as pd import spacy nlp = spacy.load("en_core_web_sm") # 替换为你实际使用的spaCy模型 data['Vektoren'] = data['Text'].apply(lambda text: nlp(text).vector)
方法2:使用spaCy的pipe批量处理(高效适配大数据集)
如果你的DataFrame数据量较大,pipe方法支持批量文本处理,比逐行调用nlp()的效率更高,能显著减少处理时间:
vector_list = [doc.vector for doc in nlp.pipe(data['Text'].tolist())] data['Vektoren'] = pd.Series(vector_list)
这种方式虽然也是生成列表后赋值,但借助了spaCy的批量优化能力,性能远优于iterrows循环。
内容的提问来源于stack exchange,提问作者Roland
相关产品推荐
相关产品推荐

