那是因为您提供的是
["a"]而不是
"a"in
ColumnTransformer。根据文档:
标量字符串或整数应在转换器期望X像一维数组(矢量)的情况下使用,否则会将二维数组传递给转换器。
现在,
TfidfVectorizer需要一个字符串迭代器作为输入(因此是一维字符串数组)。但是,由于您要以的形式发送列名列表
ColumnTransformer(即使该列表仅包含一个列),因此它将是二维数组,并将传递给
TfidfVectorizer。因此,错误。
更改为:
clmn = ColumnTransformer([("tfidf", tfidf, "a")], remainder="passthrough")为了获得更多理解,请尝试使用以上内容从pandas Dataframe中选择数据。在执行以下操作时,请检查返回数据的格式(dtype,形状):
dataset['a']vsdataset[['a']]
更新 :@SergeyBushmanov,关于您对其他答案的评论,我认为您在误解文档。如果要在两列上执行tfidf,则需要传递两个转换器。像这样:
tfidf_1 = TfidfVectorizer(min_df=0)tfidf_2 = TfidfVectorizer(min_df=0)clmn = ColumnTransformer([("tfidf_1", tfidf_1, "a"), ("tfidf_2", tfidf_2, "b") ], remainder="passthrough")


