ValueError: столбцы должны быть такой же длины, как ключ

1

У меня проблема с кодом ниже.

данные - это мой фрейм. X - список столбцов для данных поезда. L - список категориальных признаков с числовыми значениями.

Я хочу, чтобы один горячий кодировал мои категориальные функции. Поэтому я делаю следующее. Но "ValueError: Столбцы должны быть той же длины, что и ключ" (для последней строки). И я до сих пор не понимаю, почему после долгих исследований.

def turn_dummy(df, prop):
    dummies = pd.get_dummies(df[prop], prefix=prop, sparse=True)
    df.drop(prop, axis=1, inplace=True)
    return pd.concat([df, dummies], axis=1)

L = ['A', 'B', 'C']

for col in L:
    data_final[X] = turn_dummy(data_final[X], col)
  • 0
    Что такое X в этом случае?
Теги:
pandas
one-hot-encoding
dummy-variable

2 ответа

1

Нет причин создавать свою собственную функцию. У Pandas есть функция, чтобы сделать то, что вы хотите:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html

1

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

Скажем, у меня есть list: mylist = [0, 0, 0, 0]

Это длина 4. Если бы я хотел сделать 1:1 отображение элементов нового списка в это:

otherlist = ['a', 'b']

для я в диапазоне (len (mylist)): mylist [i] = otherlist [i]

Очевидно, это вызовет IndexError, потому что он пытается получить элементы, которые otherlist просто не имеет

То же самое происходит здесь. Вы пытаетесь вставить string (len = 1) в столбец длиной n> 1. Пытаться:

data_final[X] = turn_dummy(data_final[X], L)

Предполагая len(L) = number_of_rows

Ещё вопросы

Сообщество Overcoder
Наверх
Меню