Lesen von verschachteltem JSON mit verschachtelten Objekten als Pandas-DataFrame
Beim Umgang mit JSON-Daten, die verschachtelte Objekte enthalten, ist deren effiziente Bearbeitung in Python von entscheidender Bedeutung . Pandas bietet ein leistungsstarkes Tool, um dies zu erreichen – json_normalize.
Erweitern des Arrays in Spalten
Um das Standort-Array in separate Spalten zu erweitern, verwenden Sie json_normalize wie folgt:
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)
Dadurch wird ein Datenrahmen mit erweiterten Spalten erstellt:
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
Umgang mit mehreren JSON-Objekten
Bei JSON-Dateien, die mehrere Objekte enthalten, hängt die Vorgehensweise von der gewünschten Datenstruktur ab.
Einzelne Spalten behalten
Um einzelne Spalten (Datum, Nummer, Name, Orte) beizubehalten, verwenden Sie Folgendes:
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)
Dadurch werden die Daten gruppiert und die Orte verkettet:
date name number locations 0 2016-01-10 R 3932 Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...
Datenstruktur abflachen
Wenn Sie eine abgeflachte Datenstruktur bevorzugen, können Sie dies tun Verwenden Sie json_normalize mit den folgenden Einstellungen:
df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])
print(df)
Dies gibt die Daten in einer einzigen Tabelle aus:
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
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3