TypeError: '> =' не поддерживается между экземплярами 'str' и 'int' при маркировке столбца - PullRequest
0 голосов
/ 15 февраля 2019

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

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

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 Ответ

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

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

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

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

Когда вы выполните второе сравнение, Pandas неТочно так же вы сравниваете элементы str ('Down') с целым числом.(0 >= 'x' технически приемлем в чистом Python, но не разрешен Pandas.)

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

dataset['UpDown'] = np.where(dataset.UpDown < 0, 'Down', 'Up')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...