"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 les Pandas gèrent-ils les objets JSON imbriqués ?

Comment les Pandas gèrent-ils les objets JSON imbriqués ?

Publié le 2024-11-07
Parcourir:440

How Do Pandas Handle Nested JSON Objects?

Comment gérer les objets JSON imbriqués avec des pandas

Dans cet article, nous explorerons comment manipuler efficacement les structures de données JSON avec des objets imbriqués à l'aide de pandas.

Structure JSON imbriquée

Considérez la structure JSON suivante :

{
    "number": "",
    "date": "01.10.2016",
    "name": "R 3932",
    "locations": [
        {
            "depTimeDiffMin": "0",
            "name": "Spital am Pyhrn Bahnhof",
            "arrTime": "",
            "depTime": "06:32",
            "platform": "2",
            "stationIdx": "0",
            "arrTimeDiffMin": "",
            "track": "R 3932"
        },
        {
            "depTimeDiffMin": "0",
            "name": "Windischgarsten Bahnhof",
            "arrTime": "06:37",
            "depTime": "06:40",
            "platform": "2",
            "stationIdx": "1",
            "arrTimeDiffMin": "1",
            "track": ""
        },
        {
            "depTimeDiffMin": "",
            "name": "Linz/Donau Hbf",
            "arrTime": "08:24",
            "depTime": "",
            "platform": "1A-B",
            "stationIdx": "22",
            "arrTimeDiffMin": "1",
            "track": ""
        }
    ]
}

Aplatissement avec json_normalize

la fonction json_normalize de pandas nous permet d'aplatir des objets imbriqués dans un format tabulaire :

import json

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

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

Cela donne un DataFrame avec des colonnes pour chaque clé dans l'objet "locations" imbriqué.

Concaténation groupée sans aplatissement

Si l'aplatissement n'est pas vous le souhaitez, vous pouvez utiliser les capacités de regroupement et de concaténation de Pandas :

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()

Cette approche concatène les "emplacements" " sous forme de chaîne séparée par des virgules pour chaque combinaison unique de "date", "nom" et "numéro".

Conclusion

En utilisant Les fonctionnalités json_normalize et de regroupement/concaténation de pandas nous permettent de gérer efficacement les structures JSON imbriquées, nous permettant d'extraire et de manipuler des données dans un format tabulaire.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729739820. 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