Uso una función como esta para obtener líneas JSON anidadas en un marco de datos. Utiliza el útil pandas json.normalize
función:
import pandas as pd
from bson import json_util, ObjectId
from pandas.io.json import json_normalize
import json
def mongo_to_dataframe(mongo_data):
sanitized = json.loads(json_util.dumps(mongo_data))
normalized = json_normalize(sanitized)
df = pd.DataFrame(normalized)
return df
Simplemente pase sus datos mongo llamando a la función como argumento.
sanitized = json.loads(json_util.dumps(mongo_data))
carga las líneas JSON como JSON normal
normalized = json_normalize(sanitized)
anida los datos
df = pd.DataFrame(normalized)
simplemente lo convierte en un marco de datos