问题描述
我正在尝试对单个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','1234'],'time_of_day': ['Morning','Afternoon','Evening','Morning']})
感谢您的帮助!
解决方法
如果说该方法需要2D数组,只需为其提供
X_train['time_of_day'].to_frame()
,
您不是传递数据框,而是传递意甲。
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']]))