Я пытаюсь определить функцию, а затем применить ее к фрейму данных, называемому обзорами.
def stars(country, points):
if country == 'Canada':
return 3
elif points >= 95:
return 3
elif points >= 85:
return 2
else:
return 1
star_ratings = reviews.apply(lambda x: stars(x['points'], x['country']), axis=1)
Я получаю сообщение об ошибке:
<ipython-input-46-42befd5aa1a8> in stars(country, points)
2 if country == 'Canada':
3 return 3
----> 4 elif points >= 95:
5 return 3
6 elif points >= 85:
TypeError: '>=' not supported between instances of 'str' and 'int'
Как исправить код, чтобы он заработал? Кроме того, является ли использование лямбда здесь правильной/общепринятой практикой? Спасибо!
что непонятного в ошибке? Ваши данные явно содержат
str
. Просто сначала преобразуйте их в числа.Обычно переназначение на основе условий выполняется с помощью
np.select
вместо лямбды. Как и в Pandas условное создание столбца серии / кадра данныхВы отправляете переменные в обратном порядке, чем в определении функции.
Каков тип данных столбца точек? Это строка? Это действительно помогает включить небольшой образец фрейма данных, который демонстрирует вопрос, поэтому нам не нужно гадать.