Membaca Nested JSON dengan Nested Objects sebagai Pandas DataFrame
Apabila berurusan dengan data JSON yang mengandungi objek bersarang, memanipulasinya dengan cekap dalam Python adalah penting . Pandas menyediakan alat yang berkuasa untuk mencapai ini - json_normalize.
Meluaskan Tatasusunan menjadi Lajur
Untuk mengembangkan tatasusunan lokasi ke dalam lajur yang berasingan, gunakan json_normalize seperti berikut:
<code class="python">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)</code>
Ini akan mencipta bingkai data dengan lajur yang diperluas:
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
Mengendalikan Berbilang Objek JSON
Untuk fail JSON yang mengandungi berbilang objek, pendekatan bergantung pada struktur data yang dikehendaki.
Simpan Lajur Individu
Untuk menyimpan lajur individu (tarikh, nombor, nama, lokasi), gunakan yang berikut:
<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() print(df)</code>
Ini akan mengumpulkan data dan menggabungkan lokasi:
date name number locations 0 2016-01-10 R 3932 Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...
Meratakan Struktur Data
Jika anda lebih suka struktur data yang diratakan, anda boleh gunakan json_normalize dengan tetapan berikut:
<code class="python">df = pd.read_json('myJson.json', orient='records', convert_dates=['date']) print(df)</code>
Ini akan mengeluarkan data dalam satu jadual:
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
Atas ialah kandungan terperinci Bagaimana untuk Menguruskan Objek JSON Bersarang sebagai DataFrame dalam Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!