sklearn ColumnTransformer不能与pandas Dataframe一起工作 &



我有以下代码。我要做的是对pandas数据框的每一列应用不同的转换器。在开始的时候,我只希望我的两列不进行任何转换而直接通过。

import pandas as pd
from sklearn.compose import ColumnTransformer
df = pd.DataFrame({'pre0': [2, 0, 1, 2], 'pre1': [99, 56, 85, 78]})
column_meta_data = [("p1", "passthrough", "pre0"), ("p2", "passthrough", "pre1")]
column_transformer = ColumnTransformer(transformers=column_meta_data)
X_ = column_transformer.fit_transform(df)

我得到以下错误:

ValueError: The output of the 'p1' transformer should be 2D (scipy matrix, array, or pandas DataFrame).

这很奇怪,因为pandas数据框架的列应该已经是一维的。我哪里做错了?

我想可能在列的定义中,就像这里:

">columnstr,类数组类型的str, int,类数组类型的int,类数组类型的bool, slice或可调用对象在第二个轴上对数据进行索引。整数被解释为位置列,而字符串可以按名称引用DataFrame列。如果变压器期望X是类似一维数组(向量),则应该使用标量字符串或int,否则将向变压器传递二维数组。可调用对象被传递输入数据X,并且可以返回上述任何一个值。要按名称或dtype选择多个列,可以使用make_column_selector.">

实际上. 而不是

column_meta_data = [("p1", "passthrough", "pre0"), ("p2", "passthrough", "pre1")]

这个:

column_meta_data = [("p1", "passthrough", ["pre0"]), ("p2", "passthrough", ["pre1"])]

column_meta_data = [("p1", "passthrough", ["pre0","pre1"])]

最新更新