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

[Dúvida] Coluna inexistence

Estava concluindo o desafio, quando o coolab começou a insistir que 'descricao_vizinhanca' não e uma coluna existente.

import pandas as pd
url = '/content/dados_hospedagem.json'
dados = pd.read_json(url)   

dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.lower()
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('[^a-zA-Z0-9\-\']', ' ', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('(?<!\w)-(?!\w)', '', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.split()
dados.head()

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Alison, tudo bem?

No curso, foi carregado o JSON, feito a normalização com json_normalize() e inclusive utilizamos o explode() para transformar listas em várias linhas. Isso gera um DataFrame com colunas planificadas.

Mas neste desafio, você está recarregando o JSON cru novamente com pd.read_json(url), sem aplicar json_normalize() e sem extrair descricao_vizinhanca de forma correta, e é por isso que o erro ocorre: o campo 'descricao_vizinhanca' não existe nesse DataFrame.

Para solucionar, você precisa reutilizar o DataFrame que foi normalizado, ou fazer a normalização novamente nessa célula.

Solução 1 – Reutilizar os dados normalizados:

# Considerando que você já fez isso antes:
# dados = pd.json_normalize(dados['info_moveis'])
# dados = dados.explode(colunas[3:])

# Aqui, apenas prepara a nova coluna com base em 'descricao_local'
dados['descricao_vizinhanca'] = dados['descricao_local'].str.lower()
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('[^a-zA-Z0-9\-\']', ' ', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('(?<!\w)-(?!\w)', '', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.split()
dados.head()

Solução 2 – Se você quiser deixar o desafio independente:

import pandas as pd

# Carregar e normalizar diretamente
url = '/content/dados_hospedagem.json'
dados_raw = pd.read_json(url)
dados = pd.json_normalize(dados_raw['info_moveis'])

# Certifique-se de que 'descricao_local' seja texto (não lista)
dados['descricao_vizinhanca'] = dados['descricao_local'].apply(lambda x: ' '.join(x).lower())

# Limpeza
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('[^a-zA-Z0-9\-\']', ' ', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.replace('(?<!\w)-(?!\w)', '', regex=True)
dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.split()

dados.head()

Com isso, o erro de KeyError: 'descricao_vizinhanca' desaparece e a coluna é processada corretamente!

Escolha apenas uma dessas opções acima.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado