Преобразование столбца панд строк, разделенных запятыми, в фиктивные переменные
В моем фрейме данных у меня есть категориальная переменная, которую я хотел бы преобразовать в фиктивные переменные. Этот столбец, однако, имеет несколько значений, разделенных запятыми:
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')