Dans cet article, nous explorerons comment manipuler efficacement les structures de données JSON avec des objets imbriqués à l'aide de pandas.
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": ""
}
]
}
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é.
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".
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.
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