你可以轻松地做到这一点,
df.apply(LabelEncoder().fit_transform)
编辑2:
在scikit-learn 0.20中,推荐的方法是
OneHotEncoder().fit_transform(df)
因为OneHotEncoder现在支持字符串输入。使用ColumnTransformer可以仅将OneHotEncoder应用于某些列。
编辑:
由于这个答案是一年多以前的,并且产生了很多赞誉(包括赏金),所以我可能应该进一步扩大。
对于inverse_transform和transform,你必须做一点改动。
from collections import defaultdict
d = defaultdict(LabelEncoder)
这样,你现在将所有列保留LabelEncoder为字典。
# Encoding the variable
fit = df.apply(lambda x: d[x.name].fit_transform(x))
# Inverse the encoded
fit.apply(lambda x: d[x.name].inverse_transform(x))
# Using the dictionary to label future data
df.apply(lambda x: d[x.name].transform(x))