Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

KeyError no .loc

Olá, quando eu executo esse comando:

dataset.loc['Passat']

Neste conjunto de dados:

Nome     Motor     Ano     Quilometragem     Zero_km     Acessórios     Valor
0     Jetta Variant     Motor 4.0 Turbo     2003     44410.0     False     ['Rodas de liga', 'Travas elétricas', 'Piloto ...     88078.64
1     Passat     Motor Diesel     1991     5712.0     False     ['Central multimídia', 'Teto panorâmico', 'Fre...     106161.94
2     Crossfox     Motor Diesel V8     1990     37123.0     False     ['Piloto automático', 'Controle de estabilidad...     72832.16
3     DS5     Motor 2.4 Turbo     2019     NaN     True     ['Travas elétricas', '4 X 4', 'Vidros elétrico...     124549.07
4     Aston Martin DB4     Motor 2.4 Turbo     2006     25757.0     False     ['Rodas de liga', '4 X 4', 'Central multimídia...     92612.10
...     ...     ...     ...     ...     ...     ...     ...
253     Phantom 2013     Motor V8     2014     27505.0     False     ['Controle de estabilidade', 'Piloto automátic...     51759.58
254     Cadillac Ciel concept     Motor V8     1991     29981.0     False     ['Bancos de couro', 'Painel digital', 'Sensor ...     51667.06
255     Classe GLK     Motor 5.0 V8 Bi-Turbo     2002     52637.0     False     ['Rodas de liga', 'Controle de tração', 'Câmbi...     68934.03
256     Aston Martin DB5     Motor Diesel     1996     7685.0     False     ['Ar condicionado', '4 X 4', 'Câmbio automátic...     122110.90
257     Macan     Motor Diesel V6     1992     50188.0     False     ['Central multimídia', 'Teto panorâmico', 'Vid...     90381.47

258 rows × 7 columns

Aparece o seguinte erro:

/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2897                 return self._engine.get_loc(key)
   2898             except KeyError:
-> 2899                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2900         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2901         if indexer.ndim > 1 or indexer.size > 1:

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

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

pandas/_libs/index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: 'Passat'
1 resposta
solução!

Olá Tiago,

O erro aconteceu porque o loc busca baseado no index, e no seu caso o index são apenas números, no caso do professor a coluna Nome foi transformada no index.

Olhando pelo seu conjunto de dados, a coluna Nome não está definida como o index, verifica se na criação do dataset foi passado o parâmetro index_col para indicar que Nome vai ser o index:

dataset = pd.read_csv('db.csv', sep=';', index_col=0)

O instrutor mostra essa parte do index na atividade `02 Estruturas de dados no minuto 9:36

Espero ter ajudado, qualquer dúvida é só falar!