Панды JSON_Normalize только определенные столбцы - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть вложенная структура 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.

1 Ответ

0 голосов
/ 19 ноября 2018

Как насчет того, чтобы разделить 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]))
...