我在 Excel 中有这张表:
id class
0 2 3
1 1 3
2 3 5
现在,我想在 Python 中做一个“特殊”的 one-hot 编码。对于第一个表中的每个 id,都有两个数字。每个数字对应一个类(class1、class2 等)。第二个表是基于第一个表创建的,这样对于每个 id,其行中的每个数字都显示在其相应的类列中,而其他列则为零。例如,id 0 的数字是 2 和 3。2 放置在 class2,3 放置在 class3。类 1、4 和 5 的默认值为 0。结果应如下所示:
id class1 class2 class3 class4 class5
0 0 2 3 0 0
1 1 0 3 0 0
2 0 0 3 0 5
我之前的解决方案,
foo = lambda x: pd.Series([i for i in x.split()])
result=onehot['hotel'].apply(foo)
result.columns=['class1','class2']
pd.get_dummies(result, prefix='class', columns=['class1','class2'])
结果是:
class_1 class_2 class_3 class_3 class_5
0 0.0 1.0 0.0 1.0 0.0
1 1.0 0.0 0.0 1.0 0.0
2 0.0 0.0 1.0 0.0 1.0
(class_3 出现两次)。我能做些什么来解决这个问题?(在这一步之后,我可以将其转换为我想要的最终格式。)