【问题标题】:TypeError: unhashable type: 'Series' for pd.get_dummiesTypeError: unhashable type: 'Series' for pd.get_dummies
【发布时间】:2022-01-07 05:51:22
【问题描述】:

我正在尝试在我拥有的数据框中的一些标称数据上使用pd.get_dummies(来自 Kaggle 的 House 回归)。我将所有名义类别分成列名列表'obj_nominal'

当我打电话时

pd.get_dummies(df, columns=obj_nominal)

我收到错误:

TypeError: unhashable type: 'Series'.

到目前为止,我所做的唯一预处理是删除数据集中的空值。我也尝试过使用 Sklearn OneHotEncoder,它会产生同样的错误。

我还尝试使用以下方法制作单独的数据框:

x = df.iloc[:, obj_nominal]

并在数据帧上传递 get_dummies:

pd.get_dummies(data = x)

但仍然没有运气......

数据可在https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data下载

【问题讨论】:

  • 您能否添加一个示例数据框(仅几行)?见stackoverflow.com/questions/20109391/…
  • 也许试试:obj_nominal = df.columns[[pd.api.types.is_string_dtype(df[column]) for column in df.columns]] 看起来你的一个列是一系列系列。
  • @Shaido,很好的链接,但我的数据框有 79 个特征。您对此有何建议?即使只有几行也会看起来有点……铿锵有力。另外,我不确定哪一列甚至导致了问题。同时,我将发布包含数据集的竞赛链接。
  • @shuaf98:您可以删除列,直到找到导致问题的一个或多个。我猜不是所有的列都与问题相关。

标签: pandas machine-learning scikit-learn typeerror one-hot-encoding


【解决方案1】:

似乎以下解决了问题:

通过首先将每列的数据类型更改为字符串,我消除了这个问题。

x = df.loc[:, obj_nominal]
x = x.astype(str)

但是,我不确定这完成了什么,因为在我转换为字符串之前,这些是相关列的数据类型:

df.loc[:, obj_nominal].dtypes

Street           object
Alley            object
LotConfig        object
LandContour      object
Neighborhood     object
Condition1       object
Condition2       object
BldgType         object
HouseStyle       object
RoofStyle        object
RoofMatl         object
Exterior1st      object
Exterior2nd      object
GarageType       object
MasVnrType       object
Foundation       object
Heating          object
CentralAir       object
Electrical       object
SaleType         object
SaleCondition    object

【讨论】:

    猜你喜欢
    • 2022-08-11
    • 2022-12-27
    • 2015-02-11
    • 1970-01-01
    • 2021-08-31
    • 2019-10-11
    • 2020-03-27
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多