"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo administrar objetos JSON anidados como un marco de datos en Pandas?

¿Cómo administrar objetos JSON anidados como un marco de datos en Pandas?

Publicado el 2024-11-08
Navegar:471

How to Manage Nested JSON Objects as a DataFrame in Pandas?

Leer JSON anidado con objetos anidados como un marco de datos de Pandas

Cuando se trata de datos JSON que contienen objetos anidados, manipularlos de manera eficiente en Python es crucial . Pandas proporciona una poderosa herramienta para lograr esto: json_normalize.

Expandiendo la matriz en columnas

Para expandir la matriz de ubicaciones en columnas separadas, use json_normalize de la siguiente manera:

import json
import pandas as pd

with open('myJson.json') as data_file:
    data = json.load(data_file)

df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'], record_prefix='locations_')

print(df)

Esto creará un marco de datos con columnas expandidas:

  locations_arrTime locations_arrTimeDiffMin locations_depTime  \
0                                                        06:32   
1             06:37                        1             06:40   
2             08:24                        1                     

  locations_depTimeDiffMin           locations_name locations_platform  \
0                        0  Spital am Pyhrn Bahnhof                  2   
1                        0  Windischgarsten Bahnhof                  2   
2                                    Linz/Donau Hbf               1A-B   

  locations_stationIdx locations_track number    name        date  
0                    0          R 3932         R 3932  01.10.2016  
1                    1                         R 3932  01.10.2016  
2                   22                         R 3932  01.10.2016 

Manejo de múltiples objetos JSON

Para archivos JSON que contienen múltiples objetos, el enfoque depende de la estructura de datos deseada.

Mantener columnas individuales

Para mantener columnas individuales (fecha, número, nombre, ubicaciones), utilice lo siguiente:

df = pd.read_json('myJson.json')
df.locations = pd.DataFrame(df.locations.values.tolist())['name']
df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()

print(df)

Esto agrupará los datos y concatenará las ubicaciones:

        date    name number                                          locations
0  2016-01-10  R 3932         Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...

Aplanar la estructura de datos

Si prefiere una estructura de datos aplanada, puede use json_normalize con la siguiente configuración:

df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])

print(df)

Esto generará los datos en una sola tabla:

  number    date                   name  ... locations.arrTimeDiffMin locations.depTimeDiffMin locations.platform
0             R 3932  2016-01-10  R 3932  ...                       0                         0                  2
1             R 3932  2016-01-10  R 3932  ...                       1                         0                  2
2             R 3932  2016-01-10  R 3932  ...                       1                         -                  1A-B
Declaración de liberación Este artículo se reimprime en: 1729739643 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3