TypeError: '>=' не поддерживается между экземплярами 'str' и 'int' при маркировке столбца

Я пытаюсь сравнить значения в столбце и заменить их вверх / вниз. в основном, маркировка фрейма данных.

это код, который я использую.

dataset['UpDown'] = dataset['Return_Out']
dataset.UpDown[dataset.UpDown < 0] = 'Down'
dataset.UpDown[dataset.UpDown >= 0] = 'Up'

Часть "Вниз" работает отлично. И после этого числа в столбце преобразуются в формат 9090999..- е, и я получаю следующую ошибку в строке "Вверх".

TypeError: '>=' not supported between instances of 'str' and 'int'

Снимок экрана до надписи "Вниз"

частичное изображение на выходе после добавления 'Down'

Пример скриншота набора данных

1 ответ

Первая строка работает нормально, потому что в этот момент dataset.UpDown похоже int-подобный (в частности, вероятно, int64 dtype если бы мне пришлось угадывать). Таким образом, сравнение с 0 работает отлично. Но линия

dataset.UpDown[dataset.UpDown < 0] = 'Down'

также сделает некоторые элементы этого столбца str и сделать столбец dtype object,

Когда вы идете на второе сравнение, Панде не нравится, что вы сравниваете str ("Вниз") элементы в целое число. (0 >= 'x' технически нормально в чистом Python, но не разрешено Пандами.)

Вместо этого вы можете заменить обе строки просто:

dataset['UpDown'] = np.where(dataset.UpDown < 0, 'Down', 'Up')
Другие вопросы по тегам