我有一个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)这样的形式
回答:
使用~isnull()来屏蔽nan值:
mask = ~dataset['v3'].isnull()dataset['v3'][mask] = enc.fit_transform(dataset['v3'][mask])
另一种方法是使用pandas.factorize函数,它会自动处理nan值(将它们赋值为-1):
dataset['v3'] = dataset['v3'].factorize()[0]