Панды - разбить категориальные данные на столбцы

У меня есть следующая таблица

df = pandas.DataFrame({'foo': ['b', 'a,b', 'a,c', 'a,b,c'], 
                       'bar': ['X,Y', 'Z', 'Z,X', 'X,Y']})

Я хочу иметь таблицу со столбцами «a», «b», «c», «X», «Y», «Z» с записями False / True.

Это НЕ однократный энкодер, так как возможно несколько значений. Как мне этого добиться?

1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, нужно, чтобы только 2 столбца удваивали str.get_dummies с join и последнее приведение для логического:

df = df['foo'].str.get_dummies(',').join(df['bar'].str.get_dummies(',')).astype(bool)
print (df)
       a      b      c      X      Y      Z
0  False   True  False   True   True  False
1   True   True  False  False  False   True
2   True  False   True   True  False   True
3   True   True   True   True   True  False

Если несколько столбцов, более общим решением будет list comprehension с concat:

df = pd.concat([df[x].str.get_dummies(',') for x in df.columns], axis=1).astype(bool)

Другие вопросы по теме

Как передать текстовые файлы словаря модели и обучить ее на облачных платформах Google Механизм машинного обучения
LabelBinarizer от Scikit-learn против OneHotEncoder
Столбиковая диаграмма ggplot «Ошибка: дискретное значение передано в непрерывную шкалу» на оси x переупорядоченных отсчетов
Добавление pandas DataFrame с MultiIndex с данными, содержащими новые метки, но с сохранением целочисленных позиций старого MultiIndex
Достигнут предел итераций (слишком мало наблюдений в категории?)
Линейные модели с контрастами, включая всевозможные сравнения
Получение минимальных и максимальных значений упорядоченных категориальных данных в Pandas с описанием?
Удаление лишних столбцов при использовании get_dummies
Что представляет собой эквивалент R для Python .cat.codes, который преобразует категориальную переменную в целочисленные уровни?
Создание нового уникального набора данных из дат и категорий в R