Ошибка атрибута: объект ‘float’ не имеет атрибута ‘найти’

#python #data-visualization

Вопрос:

я хочу найти обладателей ученой степени. Следующий код вызывает ошибку атрибута: объект «float» не имеет атрибута «найти», и я не знаю, как это исправить:

  edu = Edu_data  # Function to identify degree def degree(x):  #if x.find('Bachelor') != -1 or x.find("Bachelor's") != -1 or x.find('BS') != -1 or x.find('bs') != -1 or x.find('Bs') != -1 or x.find('Bachelors') != -1 or x.find('Undergraduate') != -1 or x.find('graduated')!= -1 or x.find('BSE')!= -1 or x.find('Enginee') != -1 or x.find('BCS') != -1:  if x.find('Bachelor') != -1 or x.find("Bachelor's") != -1 or x.find('BS') != -1 or x.find('bs') != -1:  return(1)  if x.find('Master') != -1 or x.find("Master's") != -1 or x.find('M.S') != -1 or x.find('MS') != -1 or x.find('MPhil') != -1 or x.find('MBA') != -1 or x.find('MicroMasters') != -1 or x.find('MSc') != -1 or x.find('MSCS') !=-1 or x.find('MSDS')!=-1:  return(2)  if x.find('PhD') != -1 or x.find('P.hd') != -1 or x.find('Ph.D') != -1 or x.find('ph.d') != -1:  return(3)  else:  return(0)    # Create degree column edu['deg'] = list(map(degree, edu['Last_degree']))  edu  

Полная обратная трассировка ошибки:

 AttributeError Traceback (most recent call last) lt;ipython-input-39-9a79283a9b17gt; in lt;modulegt;  16   17 # Create degree column ---gt; 18 edu['deg'] = list(map(degree, edu['Last_degree']))  19   20 edu  lt;ipython-input-39-9a79283a9b17gt; in degree(x)  5 # Function to identify degree  6 def degree(x): ----gt; 7 if x.find('Bachelor') != -1 or x.find("Bachelor's") != -1 or x.find('BS') != -1 or x.find('bs') != -1 or x.find('Bs') != -1 or x.find('Bachelors') != -1 or x.find('Undergraduate') != -1 or x.find('graduated')!= -1 or x.find('BSE')!= -1 or x.find('Enginee') != -1 or x.find('BCS') != -1:  8 return(1)  9 if x.find('Master') != -1 or x.find("Master's") != -1 or x.find('M.S') != -1 or x.find('MS') != -1 or x.find('MPhil') != -1 or x.find('MBA') != -1 or x.find('MicroMasters') != -1 or x.find('MSc') != -1 or x.find('MSCS') !=-1 or x.find('MSDS')!=-1:  AttributeError: 'float' object has no attribute 'find'  

изображение набора данных

Комментарии:

1. ваш x — это поплавок, и у него его нет find . Вероятно, вы приводите неверный аргумент.

2. загадка 🙂 По-видимому, в эту функцию вошло число с плавающей точкой. Вы уверены, что в столбце Last_degree нет поплавков?. Похоже, вам нужно больше отлаживать его. Возможно, проверьте тип и выведите значение, если оно является плавающим, чтобы вы могли хотя бы увидеть, что было передано

3. в last_degree нет поплавков

Ответ №1:

Отображает ли изображение все ваши данные. Возможно ли, что где-то в столбце фрейма данных Last_degree содержится a float ?

Если да, измените эту строку:

 edu['deg'] = list(map(degree, edu['Last_degree']))  

Для

 edu['deg'] = list(map(degree, edu['Last_degree'].astype(str)))  

Комментарии:

1. Так что там определенно есть по крайней мере один поплавок Last_degree .