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

使用Pandas对DataFrame文本列向量化报错,求解决方案

解决CountVectorizer向量化DataFrame列时的TypeError问题

Hey there! Let's break down what's going wrong here and fix it right away.

为什么你的代码报错?

你当前的代码里,vectorizerCount.fit_transform(allData.iloc[:]['headline_text'])会直接返回一个csr_matrix对象——这是整个headline_text列向量化后的结果,而不是一个可以逐行调用的函数。当你把这个矩阵传给apply()时,Pandas会尝试把它当成函数去作用于每一行,自然就会抛出"'csr_matrix' object is not callable"的错误啦。

更重要的是:CountVectorizer本来就不需要逐行处理!它的设计逻辑是先拟合整个语料库的词汇表,再一次性把所有文本转换成向量,逐行处理反而会破坏词汇表的一致性,得到不符合预期的结果。

正确的实现方法

直接用fit_transform作用于整个headline_text列就可以了,一行代码搞定:

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd

# 初始化向量器,停用英文停用词
vectorizerCount = CountVectorizer(stop_words='english')

# 直接对整个列进行向量化,得到的矩阵每行对应原DataFrame的一行
allDataVectorized = vectorizerCount.fit_transform(allData['headline_text'])

可选:把向量结果和原DataFrame合并

如果需要把向量化后的结果和原数据放在一起,可以把csr矩阵转换成DataFrame,再和原表拼接:

# 将稀疏矩阵转为普通DataFrame,列名是词汇表中的单词
vectorized_df = pd.DataFrame(
    allDataVectorized.toarray(),
    columns=vectorizerCount.get_feature_names_out(),
    index=allData.index  # 保持和原数据的索引一致
)

# 横向拼接原DataFrame和向量化结果
combined_data = pd.concat([allData, vectorized_df], axis=1)

这样你就得到了包含原始数据和文本向量的完整数据集啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:25:48