Преобразование столбца панд строк, разделенных запятыми, в фиктивные переменные

В моем фрейме данных у меня есть категориальная переменная, которую я хотел бы преобразовать в фиктивные переменные. Этот столбец, однако, имеет несколько значений, разделенных запятыми:

0    'a'
1    'a,b,c'
2    'a,b,d'
3    'd'
4    'c,d'

В конечном счете, я хотел бы иметь двоичные столбцы для каждого возможного дискретного значения; другими словами, окончательное число столбцов равно количеству уникальных значений в исходном столбце. Я предполагаю, что мне придется использовать split(), чтобы получить каждое отдельное значение, но не уверен, что делать потом. Любой намек очень ценится!

Изменить: дополнительный поворот. Столбец имеет нулевые значения. И в ответ на комментарий, следующий желаемый результат. Спасибо!

   a  b  c  d
0  1  0  0  0
1  1  1  1  0
2  1  1  0  1
3  0  0  0  1
4  0  0  1  1

1 ответ

Решение

Используйте str.get_dummies

df['col'].str.get_dummies(sep=',')

    a   b   c   d
0   1   0   0   0
1   1   1   1   0
2   1   1   0   1
3   0   0   0   1
4   0   0   1   1

str.get_dummies функция не принимает prefix параметр, но вы можете переименовать имена столбцов возвращенного фиктивного элемента данных:

data['col'].str.get_dummies(sep=',').rename(lambda x: 'col_' + x, axis='columns')
Другие вопросы по тегам