У меня есть эта таблица в Excel:Как я могу сделать одну горячую кодировку с несколькими значениями в одной ячейке?
id class
0 2 3
1 1 3
2 3 5
Теперь я хочу сделать «специальное» один-горячее кодирование в Python. Для каждого идентификатора в первой таблице есть два числа. Каждое число соответствует классу (class1, class2 и т. Д.). Вторая таблица создается на основе первого, так что для каждого идентификатора каждый номер в своей строке отображается в соответствующем столбце класса, а остальные столбцы просто получают нули. Например, цифры для id 0 равны 2 и 3. 2 помещается в класс2, а 3 помещается в класс 3. Классы 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 дважды). Что я могу сделать, чтобы исправить это? (После этого шага я могу преобразовать его в окончательный формат, который я хочу.)
@FengLi нужно всего лишь головы. Хранение 'lambda' функций, как вы сделали, побеждает их цель. Вместо этого вы можете просто использовать 'def'. – SvbZ3r0