«<=» не поддерживается между экземплярами «str» и «int» - PullRequest
0 голосов
/ 09 июля 2019

Ниже приведен код чтения файла CSV, но возникла ошибка, что не так с моим кодом.

df2 = pd.read_csv(img_category_path, delim_whitespace= True,  header=0, names=['category'], low_memory=False )


df['upper_lower'] = ['1' if  i < 21 else '3' if   i > 36  else  '2' for i in df2['category']]

пока я добавляю low_memory= False все еще получаю ошибку

TypeError                                 Traceback (most recent call last)
<ipython-input-146-e50367d03a63> in <module>
----> 1 df['upper_lower'] = ['1' if  i < 21 else '3' if   i > 36  else  '2' for i in df2['category']]

<ipython-input-146-e50367d03a63> in <listcomp>(.0)
----> 1 df['upper_lower'] = ['1' if  i < 21 else '3' if   i > 36  else  '2' for i in df2['category']]

TypeError: '<' not supported between instances of 'str' and 'int'

df2 = pd.read_csv(img_category_path, delim_whitespace= True,  header=0, names=['category'], low_memory=False )

df['upper_lower'] = ['1' if  i < 21 else '3' if   i > 36  else  '2' for i in df2['category']]

фильтрация файла для получения точного результата

1 Ответ

2 голосов
/ 09 июля 2019

Вы можете решить свою проблему, изменив:

df['upper_lower'] = ['1' if  i < 21 else '3' if   i > 36  else  '2' for i in df2['category']]

на:

df['upper_lower'] = ['1' if  int(i) < 21 else '3' if int(i) > 36  else  '2' for i in df2['category']]

Проблема возникает (как указано в комментариях), поскольку вы загрузили строки, представляющие числа из вашегоCSV-файл, и перед сравнением необходимо преобразовать их в int (переменная i и серия df2["category"] имеют тип str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...