sklearn ColumnTransformer不适用于Pandas数据帧

2024-06-01 07:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码。我想做的是对数据帧的每一列应用不同的转换器。首先,我只想让我的两列不经过任何转换就通过

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).

这很奇怪,因为熊猫数据框的列应该已经是一维的了。我做错了什么


Tags: 数据importdataframepandasdfdatacolumnmeta
1条回答
网友
1楼 · 发布于 2024-06-01 07:27:37

我想在列的定义中,比如在here中:

columnsstr,类似数组的str,int,类似数组的int,类似数组的bool,slice或callable。在数据的第二个轴上对数据进行索引。整数被解释为位置列,而字符串可以按名称引用数据帧列。如果transformer希望X是类似1d的数组,则应使用标量字符串或int。”(vector),否则将向转换器传递2d数组。可调用数组将传递输入数据X,并可返回上述任何一个。要按名称或数据类型选择多个列,可以使用make_column_选择器。“

实际上。而不是

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"])]

相关问题 更多 >