」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Pandas 如何處理巢狀的 JSON 物件?

Pandas 如何處理巢狀的 JSON 物件?

發佈於2024-11-07
瀏覽:176

How Do Pandas Handle Nested JSON Objects?

如何使用 Pandas 處理嵌套 JSON 物件

在本文中,我們將探討如何使用 pandas 有效地操作具有嵌套物件的 JSON 資料結構。

嵌套 JSON 結構

考慮以下 JSON 結構:

{
    "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": ""
        }
    ]
}

使用 json_normalize 進行扁平化

pandas 的 json_normalize 函數允許我們將嵌套物件扁平化為表格格式:

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_')

這會產生一個 DataFrame,其中包含嵌套「locations」物件中每個鍵的欄位。

不進行扁平化的分組串聯

如果沒有扁平化如果需要,您可以使用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()

此方法連接“locations” "值作為「日期」、「名稱」和「名稱」的每個唯一組合的逗號分隔字串"number".

結論

透過利用pandas的json_normalize和分組/串聯功能,我們可以有效地處理嵌套的JSON結構,使我們能夠以表格格式提取和操作資料。

版本聲明 本文轉載於:1729739820如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3