熊猫JSON_Normalize仅特定列

时间:2018-11-19 14:17:18

标签: python pandas scikit-learn pandas-groupby sklearn-pandas

我有一个嵌套的JSON结构,需要对其进行展平。使用JSON规范化时,它会展平所有密钥。但是,我想展平特定的键,同时保留嵌套的其他键。如何使用JSON规范化实现。我正在尝试做的详细描述如下。

看起来像这样的JSON数据

data = {"Attachment":[{"url":"URL001", "type":"pdf"}, 
                      {"url":"URL002", "type":"pdf"}],
        "Image":{"url":"URL001", "type":"png"},
        "Lookup":{"ProductName":"Item001", "ProductId":"001"}}

在运行以下代码段时,它会ImageLookup字段都变平。

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规范化实现此目标的方法。

1 个答案:

答案 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]))