[英]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.explode
為paymentInstruments
的列表值。 我們需要解開它,以便我們將列表中的每個元素轉換為一行,復制索引值。
復制列表中的值后,我們可以使用pandas.Series.apply
或pandas.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.