使用巢狀物件讀取巢狀JSON 作為Pandas DataFrame
處理包含巢狀物件的JSON 資料時,在Python 中高效地操作它至關重要。 Pandas 提供了一個強大的工具來實現此目的 - json_normalize。
將陣列擴展為列
要將位置數組擴展為單獨的列,請使用json_normalize,如下所示:
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)
這將建立一個具有擴充列的資料框:
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
處理多個 JSON 物件
對於包含多個物件的 JSON 文件,該方法取決於所需的資料結構。
保留單一欄位
要保留單一欄位(日期、數字、名稱、位置),請使用下列指令:
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)
這將對資料分組並連接位置:
date name number locations 0 2016-01-10 R 3932 Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...
扁平化資料結構
如果您喜歡扁平化資料結構,您喜歡扁平化資料結構,您可使用json_normalize 並進行以下設定:
df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])
print(df)
這將在單一表中輸出資料:
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
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3