Панды get_dummies генерирует несколько столбцов для одной и той же функции

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

input['pattern'].describe(include='all')

    count     9725
    unique       7
    top          1
    freq      4580
    Name: pattern, dtype: object

Когда я пытаюсь:

    x = pd.get_dummies(input['pattern'])
    x.describe(include= 'all')

Я получаю 18 классов с 12 классами, которые являются полностью нулями. Как получилось get_dummies произведенные классы, которые не встречались ни разу на входе?

1 ответ

Решение

Из обсуждения в комментариях было установлено, что ваш столбец содержит смесь строк и целых чисел.

Например,

s = pd.Series(['0', 0, '0', '6', 6, '6', '3', '3'])
s

0    0
1    0
2    0
3    6
4    6
5    6
6    3
7    3
dtype: object

Теперь звоню pd.get_dummies приведет к нескольким таким столбцам одной и той же функции.

pd.get_dummies(s)

   0  6  0  3  6
0  0  0  1  0  0
1  1  0  0  0  0
2  0  0  1  0  0
3  0  0  0  0  1
4  0  1  0  0  0
5  0  0  0  0  1
6  0  0  0  1  0
7  0  0  0  1  0

Исправление заключается в том, чтобы все элементы были одного типа. Я бы рекомендовал, для этого случая, преобразовать в str,

s.astype(str).str.get_dummies()


   0  3  6
0  1  0  0
1  1  0  0
2  1  0  0
3  0  0  1
4  0  0  1
5  0  0  1
6  0  1  0
7  0  1  0
Другие вопросы по тегам