2017-09-25 408 views
3

即使处理了缺失值,我也面临着多个变量的这个错误。 例如:LabelEncoder:TypeError:'>'不支持'float'和'str'的实例

le = preprocessing.LabelEncoder() 
categorical = list(df.select_dtypes(include=['object']).columns.values) 
for cat in categorical: 
    print(cat) 
    df[cat].fillna('UNK', inplace=True) 
    df[cat] = le.fit_transform(df[cat]) 
#  print(le.classes_) 
#  print(le.transform(le.classes_)) 


--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-24-424a0952f9d0> in <module>() 
     4  print(cat) 
     5  df[cat].fillna('UNK', inplace=True) 
----> 6  df[cat] = le.fit_transform(df[cat].fillna('UNK')) 
     7 #  print(le.classes_) 
     8 #  print(le.transform(le.classes_)) 

C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py in fit_transform(self, y) 
    129   y = column_or_1d(y, warn=True) 
    130   _check_numpy_unicode_bug(y) 
--> 131   self.classes_, y = np.unique(y, return_inverse=True) 
    132   return y 
    133 

C:\Users\paula.ceccon.ribeiro\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\lib\arraysetops.py in unique(ar, return_index, return_inverse, return_counts) 
    209 
    210  if optional_indices: 
--> 211   perm = ar.argsort(kind='mergesort' if return_index else 'quicksort') 
    212   aux = ar[perm] 
    213  else: 

TypeError: '>' not supported between instances of 'float' and 'str' 

检查,导致错误结果插件变量:

df['CRM do Médico'].isnull().sum() 
0 

此外NaN值,这可能是造成这个错误?

+0

请张贴错误堆栈跟踪。 – MarkWeston

+0

完成,@MarkWeston。 – pceccon

回答

9

使用 df[cat] = le.fit_transform(df[cat].astype(str)) 应该帮助

+0

它确实如此。你知道为什么吗?我已经使用dtypes将它们读为str。 – pceccon

+0

它最有可能与熊猫中对象类型的定义有关,对象类型不一定意味着dtype str。当插入NaN值时,pandas强制类型改变 – sgDysregulation

相关问题