Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao incluir 'elemento_md em .loc

Fui seguindo conforme a aula, mas o ao colocar o elemento_md dentro do [] do loc ele retorna um erro.

n = notas_fulano.shape[0]
n
7

elemento_md= (n+1)/2
elemento_md
4.0

notas_fulano.loc[elemento_md - 1]

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2897             try:
-> 2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 3

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
5 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:
-> 2900                 raise KeyError(key) from err
   2901 
   2902         if tolerance is not None:

KeyError: 3.0

Qual a causa deste erro ?

3 respostas
solução!

Olá Keigo, tudo bem? Espero que sim!

Isso ocorreu porque os índices do DataFrame não foram resetados.

Você precisa fazer:

notas_fulano = notas_fulano.reset_index()

Através disso você conseguirá passar o índice numérico como parâmetro para o método loc. Se não resetar os índices, eles continuarão a ser os nomes das matérias.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Olá João, tudo bem ?

Muito obrigado pela resposta ! Deu certo aqui! Só por curiosidade... Há algum trecho do Out do erro que dá uma "dica" da causa do problema ?

Olá Keigo,

O KeyError ocorre quando se espera uma chave de um dicionário (dict) como parâmetro mas o que foi passado não é uma chave para o dicionário.

Portanto o erro estava direcionando que 3 não era uma chave do dicionário, então chequei o vídeo para ver quais eram os índices do dataframe, pois a função loc busca as linhas através do índice. Percebi que houve um momento em que os índices foram resetados, e antes disso os índices de fato não eram numéricos.