Maison  >  Article  >  développement back-end  >  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 ?

DDD
DDDoriginal
2024-10-24 14:07:02874parcourir

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, il est crucial de les manipuler efficacement en Python . Pandas fournit un outil puissant pour y parvenir - json_normalize.

Agrandissement du tableau en colonnes

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

<code class="python">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)</code>

Cela créera un dataframe 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 :

<code class="python">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)</code>

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 :

<code class="python">df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])

print(df)</code>

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn