У меня есть pandas dataframe, на котором я выполняю одно горячее кодирование с использованием метода get_dummies
.
Вот пример кода -
import pandas as pd
X = pd.DataFrame( ['a','a,b','a,c'], columns = ['category'])
X.head()
category
0 a
1 a,b
2 a,c
Вот как я это делаю горячее кодирование
X_transformed = pd.concat([X, X['category'].str.get_dummies(sep=',')], axis=1)
X_transformed.head()
category a b c
0 a 1 0 0
1 a,b 1 1 0
2 a,c 1 0 1
Проблема в том, что когда я получаю запись с неизвестным категориальным значением, я не знаю, как лучше всего с этим справиться -
y = pd.DataFrame(['a','d'], columns = ['category'])
y.head()
category
0 a
1 d
Если я снова сделаю get_dummies
на этом новом фрейме данных, тогда я получаю что-то вроде
y_transformed = pd.concat([y, y['category'].str.get_dummies(sep=',')], axis=1)
y_transformed.head()
category a d
0 a 1 0
1 d 0 1
, тогда как мой ожидаемый результат -
category a b c
0 a 1 0 0
1 d 0 0 0
, потому что категория d никогда раньше не встречалась в первое место, поэтому я хочу пренебречь этим, сделав все флаги столбцов a,b,c
равными 0.
Как я могу добиться этого в pandas?