Как транспонировать и преобразовывать в стиль «одно горячее кодирование» из столбца панд, содержащего набор? - PullRequest
0 голосов
/ 18 января 2019

Я хочу выполнить разбиение на столбец панд аналогично вопросу :

Я хочу транспонировать, а затем стиль "one-hot-encode". Например, взяв фрейм данных df

Col1           Col2
 C      {Apple, Orange, Banana}
 A      {Apple, Grape}
 B      {Banana}

Я хотел бы преобразовать это и получить:

df

Col1        C   A   B   
Apple       1   1   0
Orange      1   0   0
Banana      1   0   1
Grape       0   1   0

Как я могу использовать панд / Sklearn для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы можете преобразовать сам вывод multi hot encoding и затем создать кадр данных.

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
pd.DataFrame(mlb.fit_transform(df['Col2']).T, columns=df.Col1, index= mlb.classes_)

выход:

Col1    C   A   B
Apple   1   1   0
Banana  1   0   1
Grape   0   1   0
Orange  1   0   0

Примечание: мы все еще не можем назвать это как одно горячее кодирование. Это многократное кодирование, но в преобразованной форме.

Примеры

0 голосов
/ 18 января 2019

Вот возможный ответ (при условии, что Col1 - ваш индекс):

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
one_hot_encoded = pd.DataFrame(mlb.fit_transform(df['Col2']), columns=mlb.classes_, index=df.index)
one_hot_encoded.T
...