我在处理多个变量时遇到了这个错误,甚至在处理缺失值时也是如此。例如:
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值之外,还有什么可能导致此错误?
5条答案
按热度按时间szqfcxe21#
您可以使用
whlutmcx2#
这是由于序列
df[cat]
包含具有不同数据类型(例如字符串和/或浮点数)的元素。这可能是由于读取数据的方式,即数字作为浮点数读取,文本作为字符串读取,或者数据类型是浮点数,但在fillna
操作后发生了更改。也就是说
pandas数据类型“Object”表示混合类型而不是str类型
因此使用以下行:
应该有帮助
envsm3lx3#
由于字符串数据类型具有可变长度,它默认存储为对象类型。在处理缺失值后,我也遇到了这个问题。在标签编码工作之前,将所有这些列转换为'category'类型。
然后检查df.dtypes并执行标签编码。
7cwmlq894#
或使用带有split的强制转换,以统一类型的str
9ceoxa925#
在我的例子中,
list
中有nan
;这限制了您可以执行的某些操作