我正在使用爱荷华州的Ames住房数据,我想在lambda函数中使用LabelEncoder在我的分类功能中对字符串值进行标签编码,同时跳过NaN值(这样我就可以估算出它们后来)。这是我到目前为止的内容:
train['Fireplace Qu'].apply(lambda x: LabelEncoder(x).fit_transform if type(x) != np.float else x)
但是会引发此错误:
TypeError: object() takes no parameters
任何帮助将不胜感激-试图找到一种估算归类数据的方法。
答案 0 :(得分:0)
让我们使用factorize
pd.Series(pd.factorize(df.group)[0]).replace(-1,np.nan)
Out[141]:
0 NaN
1 NaN
2 0.0
3 0.0
4 NaN
5 NaN
6 NaN
7 NaN
8 1.0
dtype: float64
或
df.loc[df.group.notnull(),'group']=df.group.astype('category').cat.codes
数据输入
group
0 NaN
1 NaN
2 a
3 a
4 NaN
5 NaN
6 NaN
7 NaN
8 b