我有一个嵌套的JSON结构,我需要扁平化。在使用JSON normalize时,它会将所有的键都扁平化。但是,我想扁平化特定的键,同时保留嵌套的其他键。如何使用JSON normalize实现这一点。我试图做的详细描述如下。
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规范化来实现这一点。
2条答案
按热度按时间iswrvxsc1#
据我所知,没有办法使一个字段变平,但不能使同一级别的其他字段变平。因此,你可以将同一个json规格化两次,但在
pd.json_normalize
函数中使用max_level
指定在哪个级别,然后在删除不需要的列后将它们连接在一起。代码:
字符串
给出了预期的输出
gopyfrb32#
你可以把
data
分成两个不同的字典。执行两个不同的transform操作,然后连接各自的子帧:字符串