簡體   English   中英

熊貓 json_normalize KeyError

[英]pandas json_normalize KeyError

我有一個沒有統一結構的嵌套 json 文件,如下例所示:

[{ "name": "Jon", "last": "Jonny"}, 
 {"name": "Jimmy", "last": "johnson", "kids":[{"kidName":"johnson_junior","kidAge": "1"}, {"kidName":"johnson_junior2", "kidAge": "4"}]}]

看到在第二項中有第一項中不存在的列表名稱“kids”。

當我嘗試用 pandas json_normalize 扁平化 json 時拋出錯誤消息:“KeyError:'kids'”

這是 json_normalize 命令:

flat_json = json_normalize(json_file, record_path= 'kids',  errors='ignore')

json_normalize 似乎不支持沒有統一結構的嵌套 json。

有人遇到過同樣的問題嗎? 你知道如何度過難關嗎?

如果不是很麻煩,只要該鍵不存在,我就會添加'kids':[{'kidName':None,'kidAge':None}]

errors='ignore'用於meta中列出的鍵(請參閱docu ),而您對kids指定的是記錄路徑

我不知道您是否在尋求一般性建議,如“如果記錄路徑密鑰有時不可用會發生什么?”,但以防萬一您提供的數據示例是您當前的問題,這就是我建議的快速修復.

這樣的事情有效:

data = {"name": "Jimmy", "last": "johnson", "kids":[{"kidName":"johnson_junior","kidAge": "1"}, {"kidName":"johnson_junior2", "kidAge": "4"}]}]

# then you inform with empty kids if looping doesn't alter your desired flow that much
[elem.update({'kids':[{'kidName':None,'kidAge':None}]}) for elem in data if 'kids' not in elem.keys()]

# finally you normalize
flat_json = json_normalize(data,'kids', ['name','last'])

輸出:

kidAge          kidName   name     last
0   None             None    Jon    Jonny
1      1   johnson_junior  Jimmy  johnson
2      4  johnson_junior2  Jimmy  johnson

暫無
暫無

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

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