使用MinMaxScaler缩放数据会导致无法散列的类型错误

时间:2019-06-24 05:10:43

标签: python-3.x scikit-learn

我正在尝试使用MinMaxScaler缩放数据。我正在使用sklearn。当我尝试调整数据框并进行变形时,出现以下错误消息。我会发布一些代码,但与错误消息的前几行相同。我还会发布一些示例数据,但是我的数据框有大约100万条记录和700列。有人知道这个问题可能是什么吗?

Error:

    171     scaler = MinMaxScaler()
--> 172     s_df[list_cont]=scaler.fit_transform(s_df[list_cont])
    173 
    174     return s_df

/anaconda3/envs/py36/lib/python3.6/site-packages/pandas/core/frame.py in __setitem__(self, key, value)
   3368         else:
   3369             # set column
-> 3370             self._set_item(key, value)
   3371 
   3372     def _setitem_slice(self, key, value):

/anaconda3/envs/py36/lib/python3.6/site-packages/pandas/core/frame.py in _set_item(self, key, value)
   3443 
   3444         self._ensure_valid_index(value)
-> 3445         value = self._sanitize_column(key, value)
   3446         NDFrame._set_item(self, key, value)
   3447 

/anaconda3/envs/py36/lib/python3.6/site-packages/pandas/core/frame.py in _sanitize_column(self, key, value, broadcast)
   3659 
   3660         # broadcast across multiple columns if necessary
-> 3661         if broadcast and key in self.columns and value.ndim == 1:
   3662             if (not self.columns.is_unique or
   3663                     isinstance(self.columns, MultiIndex)):

/anaconda3/envs/py36/lib/python3.6/site-packages/pandas/core/indexes/base.py in __contains__(self, key)
   3918     @Appender(_index_shared_docs['contains'] % _index_doc_kwargs)
   3919     def __contains__(self, key):
-> 3920         hash(key)
   3921         try:
   3922             return key in self._engine

TypeError: unhashable type: 'set'

1 个答案:

答案 0 :(得分:0)

sklearn.preprocessor.MinMaxScaler无关。

如您所见,所有错误消息均来自pandas,而不是sklearn

s_df[list_cont]=scaler.fit_transform(s_df[list_cont])行中, list_cont包含一个set,因此pandas抱怨它无法选择列。