我有一个嵌套的JSON结构,需要对其进行展平。使用JSON规范化时,它会展平所有密钥。但是,我想展平特定的键,同时保留嵌套的其他键。如何使用JSON规范化实现。我正在尝试做的详细描述如下。
看起来像这样的JSON数据
data = {"Attachment":[{"url":"URL001", "type":"pdf"},
{"url":"URL002", "type":"pdf"}],
"Image":{"url":"URL001", "type":"png"},
"Lookup":{"ProductName":"Item001", "ProductId":"001"}}
在运行以下代码段时,它会Image
和Lookup
字段都变平。
from pandas.io.json import json_normalize
df = json_normalize(data)
df.to_json(orient="records")
输出看起来像
Attachment Image.URL Image.Type Lookup.ProductName Lookup.ProductId
[{...}, {...}] URL001 png Item001 001
但是我不想展平Image
键并保持原样。
预期输出如下
Attachment Image Lookup.ProductName Lookup.ProductId
[{...}, {...}] {"url":...,} Item001 001
是否有一种使用JSON规范化实现此目标的方法。
答案 0 :(得分:0)
您如何将data
分成两个单独的字典。执行2种不同的变换操作,然后加入相应的数据帧:
data1 = {k:v for k,v in data.iteritems() if k!='Image'}
data2 = {k:v for k,v in data.iteritems() if k=='Image'}
df = pd.io.json.json_normalize(data1).join(pd.DataFrame([data2]))