如何使用 Sk-learn OneHotEncoder 对数据框中的两列或多列进行编码?

How to Encode two or more columns in a dataframe using Sk-learn OneHotEncoder?

Here is my dataframe

我想使用 sklearn OneHotEncoder 和 Column Transformer 对 2 列进行编码:行和名称。但是,我只能使用此代码对一列进行编码。

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
X = new_df_cl.iloc[:,:-2].values
lines = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [4])], remainder='passthrough')
X = np.array(lines.fit_transform(X))

ColumnTransformer 中转换器列表中元组的语法是

(name, transformer, columns)

其中 columns 可以是列索引列表。因此,如果要转换索引 4 和 5 处的列,请将列指定为 [4, 5],如下所示:

ColumnTransformer(
    transformers=[('encoder', OneHotEncoder(), [4, 5])],  # <-- here
    remainder='passthrough'
)