Maison  >  Article  >  développement back-end  >  Comment les Pandas gèrent-ils les objets JSON imbriqués ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 18:28:05581parcourir

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 :

<code class="json">{
    "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": ""
        }
    ]
}</code>

Aplatissement avec json_normalize

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

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

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 souhaité, vous pouvez utiliser les capacités de regroupement et de concaténation de Pandas :

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

Cette approche concatène les valeurs "emplacements" sous la forme d'une 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 pouvons gérer efficacement les structures JSON imbriquées, nous permettant d'extraire et de manipuler des données dans un format tabulaire.

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