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'
Снимок экрана до надписи "Вниз"
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')