簡體   English   中英

如何將 json 文件中的嵌套對象作為數據框讀取?

[英]How to read nested objects in a json file as dataframe?

我有一個包含內容的 .json 文件:

{"success":true,"code":"SUCCESS","data":{"from":1514745000000,"to":1522175400000,"transactionData":[{"name":"充值&賬單支付"," paymentInstruments":[{"type":"TOTAL","count":4200,"amount":1845307.4673655091}]},{"name":"點對點支付","paymentInstruments":[{"type ":"TOTAL","count":1871,"amount":1.2138655299749982E7}]},{"name":"Merchant Payments","paymentInstruments":[{"type":"TOTAL","count": 298,"amount":452507.168646613}]},{"name":"金融服務","paymentInstruments":[{"type":"TOTAL","count":33,"amount":10601.419933464953}]}, {"name":"Others","paymentInstruments":[{"type":"TOTAL","count":256,"amount":184689.8662902223}]}]},"responseTimestamp":1630501487199}

我想將其轉換為熊貓數據框。 但是當我申請時:

a = pd.read_json('/1.json')

我得到這樣的輸出: 在此處輸入圖像描述

如何以正確的 pandas DataFrame 格式獲取它?

由於您想讀取字典中的數據鍵。 您可以將 json 作為字典加載到內存中,然后使用 pandas 將其轉換為數據幀。

評論中所述:這是預期的輸出

在此處輸入圖像描述

解決方案 :

這里我們首先讀取 json 數據,然后將data >>> transaction密鑰轉換為 pandas 數據幀。

上面為我們提供了一個數據框,其中包含使用pandas.DataFrame.explodepaymentInstruments的列表值。 我們需要解開它,以便我們將列表中的每個元素轉換為一行,復制索引值。

復制列表中的值后,我們可以使用pandas.Series.applypandas.json_normalize將獲得的字典轉換為列

讀取數據

import json

f = open(r'/1.json')
data = json.load(f)
                           
df = pd.DataFrame.from_dict(data['data']['transactionData'])

預處理和生成數據

df = df.explode('paymentInstruments')
df = pd.concat([df, df.pop('paymentInstruments').apply(pd.Series)], axis = 1)

輸出

這給了我們預期的輸出

在此處輸入圖像描述

或者 :

這是json_normalize解決方案

df = df.explode('paymentInstruments')
df = pd.concat([df, pd.json_normalize(df.pop('paymentInstruments'))], axis = 1)

這給了我們:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM