Pandas / Jupyter - Использование .contains () - Может использовать только аксессор .str со строковыми значениями. - PullRequest
0 голосов
/ 16 ноября 2018

Итак, я выполняю задание на ноутбуке Jupyter, используя панд.

Смысл в том, чтобы настроить столбец DF, содержащий информацию о степени персонала.Мне нужно заменить записи градусов (строки) с числами.(1 = Высшая школа, 2 = Технический, 3 = Выпускник, 4 = Аспирант)

import numpy as np
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

formacao = pd.read_csv("bases/formacao.csv")
formacao['grau'] = formacao.degree
formacao.grau.fillna(0, inplace=True)
formacao.loc[formacao.grau.str.contains('Tecnico|Curso T|Technical|Técnico|Technician|Minor|Technologist',case=False,na=False)] = 2
formacao.loc[formacao.grau.str.contains('Undergraduate|High School|Ensino Médio|Ensino Medio|Cursando|Under graduate',case=False,na=False)] = 1
formacao.loc[formacao.grau.str.contains('Bachelor|Bacharel|Licenciatura|B.S.|College|Engenheiro|Engenharia|Graduate|Ciencia|Ciência|Science|Graduação',case=False,na=False)] = 3
formacao.loc[formacao.grau.str.contains('Master|MBA|Mestrado|Pós|Post|Especialista|Specialist|Specialization|Especialização',case=False,na=False)] = 4
formacao.grau.unique()

Это мой код, проблема в том, что иногда он работает.Иногда это не так.Я использовал этот точный код ранее и получил все результаты, еще не покрытые.Затем начал добавлять новые строки, и я получил эту ошибку:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

Я закрыл Jupyter, и он снова работает.Я изменяю одну букву и ту же ошибку.Теперь, Я знаю, что это не имеет смысла , но я не могу выполнить такое задание.Не только потому, что это не сделано, но и как я могу узнать, сможет ли учитель выполнить код.Что может быть не так?

Вот полный след:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-12-4bad11236a95> in <module>
      1 formacao['grau'] = formacao.degree
      2 formacao.grau.fillna(0, inplace=True)
----> 3 formacao.loc[formacao.grau.str.contains('Tecnico|Curso T|Technical|Técnico|Technician|Minor|Technologist',case=False,na=False)] = 2
      4 formacao.loc[formacao.grau.str.contains('Undergraduate|High School|Ensino Médio|Ensino Medio|Cursando|Under graduate',case=False,na=False)] = 1
      5 formacao.loc[formacao.grau.str.contains('Bachelor|Bacharel|Licenciatura|B.S.|College|Engenheiro|Engenharia|Graduate|Ciencia|Ciência|Science|Graduação',case=False,na=False)] = 3

c:\users\user\appdata\local\programs\python\python36\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   4370         if (name in self._internal_names_set or name in self._metadata or
   4371                 name in self._accessors):
-> 4372             return object.__getattribute__(self, name)
   4373         else:
   4374             if self._info_axis._can_hold_identifiers_and_holds_name(name):

c:\users\user\appdata\local\programs\python\python36\lib\site-packages\pandas\core\accessor.py in __get__(self, obj, cls)
    131             # we're accessing the attribute of the class, i.e., Dataset.geo
    132             return self._accessor
--> 133         accessor_obj = self._accessor(obj)
    134         # Replace the property with the accessor object. Inspired by:
    135         # http://www.pydanny.com/cached-property.html

c:\users\user\appdata\local\programs\python\python36\lib\site-packages\pandas\core\strings.py in __init__(self, data)
   1893 
   1894     def __init__(self, data):
-> 1895         self._validate(data)
   1896         self._is_categorical = is_categorical_dtype(data)
   1897 

c:\users\user\appdata\local\programs\python\python36\lib\site-packages\pandas\core\strings.py in _validate(data)
   1915             # (instead of test for object dtype), but that isn't practical for
   1916             # performance reasons until we have a str dtype (GH 9343)
-> 1917             raise AttributeError("Can only use .str accessor with string "
   1918                                  "values, which use np.object_ dtype in "
   1919                                  "pandas")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...