Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

No cargan las demás columnas

Hola, buenas tardes, estuve realizando el desafío y generé el siguiente código:

import requests
import json
import pandas as pd

datos_frutas = requests.get('https://fruityvice.com/api/fruit/all')

resultado = json.loads(datos_frutas.text)

datos = pd.DataFrame(resultado)

pd.json_normalize(datos["nutritions"], meta=["name", "id", "family", "order", "genus"])

al momento de hacerlo correr, solo genera los datos normalizados de la columna nutritions, pero no de aquellas columnas designadas en meta, ¿dónde podría estar el error?

Quedo a la espera de algún comentario.

Saludos y gracias.

2 respuestas

Hola Andrés, cómo va? :))

Por lo que vi en tu código, estás intentando normalizar solamente la columna "nutritions" con la función pd.json_normalize(datos["nutritions"], meta=["name", "id", "family", "order", "genus"]). Sin embargo, para normalizar todas las columnas designadas en "meta", debes aplicar la función pd.json_normalize al DataFrame completo, de la siguiente manera:

datos_normalizados = pd.json_normalize(datos, record_path=None, meta=["name", "id", "family", "order", "genus"])

Si haces de esa manera, deberías obtener la normalización de todas las columnas designadas en "meta". ;))

Cualquier cosa, avísame si no dió con esa solución que intento ayudarte nuevamente. <3

Si este post te ayudó, por favor, marca como solucionado ✓.

Estimada Erika

Espero estés muy bien, muchas gracias por tu pronta respuesta!

Según lo señalado, generé el siguiente código:

import requests
import json
import pandas as pd

datos_frutas = requests.get('https://fruityvice.com/api/fruit/all')

resultado = json.loads(datos_frutas.text)

datos = pd.DataFrame(resultado)

datos_normalizados = pd.json_normalize(datos, record_path=None, meta=["name", "id", "family", "order", "genus"])

Esto me termina generando el siguiente error:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-aee19a0146f3> in <cell line: 11>()
      9 datos = pd.DataFrame(resultado)
     10 
---> 11 datos_normalizados = pd.json_normalize(datos, record_path=None, meta=["name", "id", "family", "order", "genus"])

1 frames
/usr/local/lib/python3.10/dist-packages/pandas/io/json/_normalize.py in <genexpr>(.0)
    458 
    459     if record_path is None:
--> 460         if any([isinstance(x, dict) for x in y.values()] for y in data):
    461             # naive normalization, this is idempotent for flat records
    462             # and potentially will inflate the data considerably for

AttributeError: 'str' object has no attribute 'values'

Me podrías ayudar con esto? ahora quedé un poco más perdido que antes :(