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

DDD
Libérer: 2024-10-24 14:07:02
original
975 Les gens l'ont consulté

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>
Copier après la connexion

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 
Copier après la connexion

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>
Copier après la connexion

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...
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal