import pandas as pd
import numpy as np
a = [['苹果', 10, 4.2], ['龙眼', '6.2,6.8', 0.03], ['荔枝', np.nan, np.nan]]
df = pd.DataFrame(a)
df.columns=['a','b','c']
print(df)
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
# df['a'].encode('Unicode')
enc.fit(df['a'])
df['a'] = enc.transform([df['a']])
print('df[a]\n',df['a'])
输出结果:
a b c
0 苹果 10 4.20
1 龙眼 6.2,6.8 0.03
2 荔枝 NaN NaN
报错:
ValueError: could not convert string to float: '荔枝'
1个回答
怎么一直没有人回答这个问题...
OneHotEncoder不能直接把string类型的列进行one-hot coding,你需要先用整数代替字符,比如说用LabelEncoder,然后再用OneHotEncoder。
这个问题sklearn onehotencoder的具体用法是和你一模一样的情况,数据中一列是字符形式。你直接看里面的代码就行了。
SofaSofa数据科学社区DS面试题库 DS面经