Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menguruskan Objek JSON Bersarang sebagai DataFrame dalam Pandas?

Bagaimana untuk Menguruskan Objek JSON Bersarang sebagai DataFrame dalam Pandas?

DDD
DDDasal
2024-10-24 14:07:02874semak imbas

How to Manage Nested JSON Objects as a DataFrame in Pandas?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn