为什么 sklearn OneHotEncoder 不能处理单个数据框列?

Why won't sklearn OneHotEncoder work with a single dataframe column?

我正在尝试获取单个 pandas 数据帧列的一次性编码。这是我得到的:

OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_cols_train = pd.DataFrame(OH_encoder.fit_transform(X_train['time_of_day']))

当运行这个时候,我得到了一个相当大的错误堆栈,可以总结如下:

ValueError: Expected 2D array, got 1D array instead:

我好像想不通。

这是一些示例数据:

X_train = pd.DataFrame({'ID': ['1234', '5678', '5678', '1234'], 
                   'time_of_day': ['Morning', 'Afternoon', 'Evening', 'Morning']})

感谢任何帮助!

如果它说该方法需要一个二维数组,只需提供它

X_train['time_of_day'].to_frame()

您传递的不是 Dataframe,而是 Serie。

type(X_train['time_of_day'])
pandas.core.series.Series

您可以使用 X_train[['time_of_day']](与 [[ ]]):

type(X_train[['time_of_day']])
pandas.core.frame.DataFrame

像这样

OH_cols_train = pd.DataFrame(OH_encoder.fit_transform(X_train[['time_of_day']]))