假设我有一个如下的数据框
df = pd.DataFrame({'animal': ['Dog', 'Bird', 'Dog', 'Cat'],
'color': ['Black', 'Blue', 'Brown', 'Black'],
'age': [1, 10, 3, 6],
'pet': [1, 0, 1, 1],
'sex': ['m', 'm', 'f', 'f'],
'name': ['Rex', 'Gizmo', 'Suzy', 'Boo']})
我想使用标签编码器对“动物”、“颜色”、“性别”和“名称”进行编码,但我不需要对其他两列进行编码。我还希望能够在之后对列进行 inverse_transform。
我尝试了以下方法,尽管编码按我的预期工作,但反转却没有。
to_encode = ["animal", "color", "sex", "name"]
le = LabelEncoder()
for col in to_encode:
df[col] = fit_transform(df[col])
## to inverse:
for col in to_encode:
df[col] = inverse_transform(df[col])
inverse_transform 函数产生以下数据帧:
动物 | 颜色 | 年龄 | 宠物 | 性别 | 姓名 |
---|---|---|---|---|---|
雷克斯 | 嘘 | 1 | 1 | 小发明 | 雷克斯 |
嘘 | 小发明 | 10 | 0 | 小发明 | 小发明 |
雷克斯 | 雷克斯 | 3 | 1 | 嘘 | 苏西 |
小发明 | 嘘 | 6 | 1 | 嘘 | 嘘 |
这显然是不对的,但我不确定我还能如何做到这一点?
任何意见,将不胜感激!