【问题标题】:Why won't sklearn OneHotEncoder work with a single dataframe column?为什么 sklearn OneHotEncoder 不能与单个数据框列一起使用?
【发布时间】:2020-12-08 07:29:21
【问题描述】:

我正在尝试对单个 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']})

感谢任何帮助!

【问题讨论】:

    标签: python pandas scikit-learn sklearn-pandas one-hot-encoding


    【解决方案1】:

    您传递的不是数据框,而是 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']]))
    

    【讨论】:

      【解决方案2】:

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

      X_train['time_of_day'].to_frame()
      

      【讨论】:

        猜你喜欢
        • 2021-11-04
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-09
        相关资源
        最近更新 更多