одно горячее кодирование с несколькими категориальными значениями на строку в Python - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу реализовать одно горячее кодирование для категориальной функции в python 3. Я заметил, что немногие идентификаторы имеют более одного категориального значения.

Моя таблица:

id  type
13   A
13   B
2    A
34   C
34   A
34   B

Вывод моего желания:

id  type@A  type@B  type@C
13     1      1       0
2      1      0       0
34     1      1       1

что я могу сделать?

1 Ответ

0 голосов
/ 03 февраля 2019

Если вы в порядке с пандами, сохраните данные в кадре данных (например, имя df) и используйте:

pd.crosstab(df['id'],df['type']).rename_axis(None,axis=1)

Пример ниже:

import pandas as pd
d={'id': {0: 13, 1: 13, 2: 2, 3: 34, 4: 34, 5: 34},
'type': {0: 'A', 1: 'B', 2: 'A', 3: 'C', 4: 'A', 5: 'B'}}
df=pd.DataFrame(d)
print(df)

   id type
0  13    A
1  13    B
2   2    A
3  34    C
4  34    A
5  34    B

Использование pd.crosstab()

df_new = pd.crosstab(df['id'],df['type']).rename_axis(None,axis=1).add_prefix('type@')
print(df_new)

     type@A  type@B  type@C
id                        
2        1       0       0
13       1       1       0
34       1       1       1
...