"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment gérer les objets JSON imbriqués en tant que DataFrame dans Pandas ?

Comment gérer les objets JSON imbriqués en tant que DataFrame dans Pandas ?

Publié le 2024-11-08
Parcourir:591

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

Lecture de JSON imbriqué avec des objets imbriqués en tant que DataFrame Pandas

Lorsque vous traitez des données JSON contenant des objets imbriqués, les manipuler efficacement en Python est crucial . Pandas fournit un outil puissant pour y parvenir - json_normalize.

Agrandissement du tableau en colonnes

Pour étendre le tableau d'emplacements en colonnes distinctes, utilisez json_normalize comme suit :

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)

Cela créera une trame de données avec des colonnes développées :

  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 

Gestion de plusieurs objets JSON

Pour les fichiers JSON contenant plusieurs objets, l'approche dépend de la structure de données souhaitée.

Conserver les colonnes individuelles

Pour conserver les colonnes individuelles (date, numéro, nom, emplacements), utilisez ce qui suit :

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)

Cela regroupera les données et concaténera les emplacements :

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

Aplatir la structure des données

Si vous préférez une structure de données aplatie, vous pouvez utilisez json_normalize avec les paramètres suivants :

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

print(df)

Cela affichera les données dans une seule table :

  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
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729739643. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3