Ошибка функции Python: «<» не поддерживается между типами «str» и «int» - PullRequest
0 голосов
/ 07 декабря 2018

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

функция:

days = df['days_difference']
if(days<30):
   return 'repeat'
else:
   return 'fresh'

Я получаю ошибку: не поддерживается между экземплярами 'str' и 'int'

Столбец days_difference содержит целочисленные значения вместе с Noneзначения.

в поисках решения!

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Ошибка самоочевидна:

Ошибка функции Python: '<' не поддерживается между типами 'str' и 'int' </p>

Это вызваносравнение типов str и int, что недопустимо в Python 3 (хотя это нормально в Python 2).

Пример:

result = '20' > 10  # In Python 3, this is illegal and will raise an exception

В вашем случае ошибкаскорее всего вызвано тестом if(days<30):.Возможно, ваш фрейм данных содержит str значений.Возможно, вам придется преобразовать их в int, прежде чем пытаться сравнить с другим значением:

days = int(df['days_difference'])
if(days<30):
   return 'repeat'
else:
   return 'fresh'
0 голосов
/ 07 декабря 2018

Одна рекомендация, которую вам следует учесть, всегда выполнять поиск с точной ошибкой, которую вы получаете от python, и часто вы получаете ответ в течение 0,1 мс.

В вашем случае вы сравниваете целочисленное значение(скажем, 2) для строкового значения, которое оказывается '2') и python не понимает.

Вы можете сравнить `int (days) 'и 30 как:

if(int(day) < 30):
    return 'repeat'
else: 
    return 'fresh'
0 голосов
/ 07 декабря 2018

Это в основном означает, что ваша переменная 'days' является строкой.Вы не можете сравнивать строки с целыми числами, используя «<».Попробуйте: </p>

...
if(int(days)<30):
...
...