Jump to content

Pegar coluna do JSON


sirsmart
Ir para a Solução Solucionado por Thanael,

Postagens Recomendadas

Galera tenho um JSON com essas 4 colunas, porem dentro da coluna issues eu tenho todos os campos que preciso trabalhar.

Como eu faço para pegar as colunas da coluna issues ?

Estou fazendo assim:

    df2.columns = ['startAt', 'maxResults', 'total', 'issues']

	 for item in df2.index:

        df2.loc[item, issues['ID']]

Mas está dizendo que não existe o campo ID dentro da isseus.

Como posso fazer isso ?

Obrigado

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Bom dia @sirsmart tudo bem ?

Pelo que estou observando na sua estrutura você transformou o arquivo todo em um DataFrame... Sabendo que o campo issues possui dentro dele os dados você não conseguirá acessa-los facilmente como pretende atravês deste DataFrame principal.

Solução

  • Criar o DataFrame direto com os dados de issues
    A maneira mais prática de trabalhar com os esses dados e criar o DataFrame somente com os dados do issues, exemplo
    • Converter o JSON em DICT atravês da lib json e criar o dataframe direto dos dados de issues
      df = pd.DataFrame(json_dict['issues'])
    •  
    • Usar o pd.json_normalize para criar o DataFrame com os dados do issues
      df_inicial = pd.read_json('arquivo.json')
      
      df = pd.json_normalize(df_inicial['issues'])

Sugiro testar uma das duas alternativas e dizer se funcionou. Caso contrario estou a disposição para lhe auxiliar.

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Ótimo, segue abaixo algumas formas de acessar os dados dela.

  • pd.json_normalize
    Pode usar mais um pd.json_normalize para obter os dados dela e transformar em outro dataframe.
     
  • Criar as colunas através do Apply
    Criar as colunas de dentro deste "project" via apply.Exemplo
    df['project_name'] = df['project'].apply(lambda row: row['name'])
    df['project_category'] = df['project'].apply(lambda row: row['category']['name'])

Tenta realizar esse exemplo do apply que mandei, provavelmente ele resolva seu problema.

OBS: Pode ser necessário adicionar umas tratativas (ifs) caso existam dados nulos por exemplo. Ai basta usar IF ternário caso necessário.

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Poderia me dar um exemplo desta coluna "statusHistory" ? Pois para funcionar ali ela precisará ser um OBJECT (JSON). 

Aparentemente a coluna statusHistory é uma coluna STR portanto a forma de trazer isso é diferente. (Pode usar varias alternativas dependendo da estrutura da coluna)

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed
  • Solução

Pela imagem, essa coluna está trazendo a lista de registros, uma forma de tratar ela é transformando a lista em um novo DataFrame (haha) 

Segue abaixo uma ideia de código.

df_principal = pd.DataFrame()

for index, row in df.iterrows():
	# Criar o DataFrame desta lista	
	df_row = pd.DataFrame(row['statusHistory'])
	# Adicionar as colunas do DF principal a este novo	
	df_row['id'] = row['id']

	# Juntar ao DF principal
	df_principal = pd.concat([df_principal, df_row], ignore_index=True)
	

Em resumo a lógica e percorrer pelo DF principal, criar um novo DataFrame do statusHistory de cada linha e juntar tudo isso num dataframe.

Espero que isso lhe auxilie de alguma forma.

  • Amei 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...