如何解决为什么sklearn OneHotEncoder不能与单个数据框列一起使用?
我正在尝试对单个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']]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。