#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
.