Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

JSON con formato incorrecto de objetos anidados

https://gist.githubusercontent.com/ahcamachod/24a6235f7cdf255501b5ab4f9b0fd97f/raw/fa329f6d6c1b6b00b3ba457cdc850b53210633ca/zoop_market.json

el enlace muestra un json de un array de objetos en los cuales existe una propiedad "item" y otra "tienda" las cuales guardan un "String" de datos con la estructura de un objeto.

{"index":0,"item_identificador":"FDB08","tienda_identificador":"OUT018","ventas_totales":"176503.58","item":"{'item_peso': 6.055, 'item_contenido_grasa': 'Bajo Contenido de Grasa', 'item_visibilidad': 0.031230059, 'item_tipo': 'Frutas y Vegetales', 'item_precio': 160.36, 'item_cantidad_venta': None}","tienda":"{'tienda_ano_establecimiento': 2019, 'tienda_tamano': 'Medio', 'tienda_tipo_ubicacion': 'Nivel 3', 'tienda_tipo': 'Supermercado Tipo 2'}"},

2 opciones , arreglar el objeto json del link para que contenga los objetos anidados con comillas simples, o arreglarlo desde el codigo en py

import pandas as pd
import json

df = pd.read_json(url)
df['item'] = df['item'].apply(lambda x: json.loads(x.replace("'", '"')) if isinstance(x, str) else x)
df['tienda'] = df['tienda'].apply(lambda x: json.loads(x.replace("'", '"')) if isinstance(x, str) else x)

ya que si no es así, las instrucciones =>

tienda_df = pd.json_normalize(df['tienda'])
item_df = pd.json_normalize(df['item']) 

lanza datos incorrectos

1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartetucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios