Python - 类型错误:不可排序的类型:str() > float()

12

我有一个CSV文件,其中有v3列,但该列中有一些“nan”行。我该如何排除这些行。

 dataset = pd.read_csv('mypath') 

    enc = LabelEncoder()
    enc.fit(dataset['v3'])
    print('fitting')
    dataset['v3'] = enc.transform(dataset['v3'])
    print('transforming')
    print(dataset['v3'])
    print('end')

编辑:V3列有A、C、B、A、C、D、、、A、S,我希望将其转换为(1,2,3,1,2,4、、、1,7)。


你想对这些行做什么?删除它们吗?(dropna) 填充NaN值吗?(fillna) - joris
你是说 pandas.factorize 吗? - Anton Protopopov
V3列有A、C、B、A、C、D、、、A、S等,我想将其转换为(1、2、3、1、2、4、、、1、7)。 - Thoram Mastero
那一列中的NaN应该怎么处理? - Rob
什么都没有,因此我得到了这个错误 TypeError: unorderable types: str() > float() - Thoram Mastero
显示剩余3条评论
1个回答

14

使用~isnull()将NaN值掩盖起来:

mask = ~dataset['v3'].isnull()
dataset['v3'][mask] = enc.fit_transform(dataset['v3'][mask])

另一种方法是使用pandas.factorize函数,它会自动处理nans并将它们分配为-1:

dataset['v3'] = dataset['v3'].factorize()[0]

dataset['v3'] = dataset['v3'].factorize()[0] 这行代码解决了我的问题。 - Thoram Mastero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接