我正在使用Python3.5根据train.csv中的数据预测test.csv中的一些数据。
在执行数据扫描时,我转换train.csv的行和列,这非常好。但是当对test.csv执行相同操作时,它会给出一个:
TypeError:无序类型:float()>;str()
train = pd.read_csv('train.csv', header = 0, parse_dates = True, low_memory= False)
test = pd.read_csv('test.csv' , header =0, parse_dates = True, low_memory= False)
le = preprocessing.LabelEncoder()
train.Category = le.fit_transform(train.Category)
train.DayOfWeek = le.fit_transform(train.DayOfWeek)
train.PdDistrict = le.fit_transform(train.PdDistrict)
错误部分
test.DayOfWeek = le.fit_transform(test.DayOfWeek)
test.PdDistrict = le.fit_transform(test.PdDistrict)
两个问题。您不应该对多个列重复使用相同的
LabelEncoder
。否则,您将丢失映射,无法转换测试数据这里只是一个快速的代码片段,可以帮助其他正在搜索的人解决无序类型错误
这个问题(你已经发现了)粘贴在这里,正如在另一个论坛帖子中所发现的:“因为我试图编码的列中基本上存在混合类型。我最终能够通过将每个“object”类型列转换为“str”类型来绕过它,从而停止了错误。”
在处理丢失的数据后,可以使用此代码通过
.astype(str)
属性遍历与一组数据类型匹配的列,并将它们转换为字符串相关问题 更多 >
编程相关推荐