簡體   English   中英

使用唯一鍵展平/規范化深度嵌套的對象

[英]Flattening/normalizing deeply nested objects with unique keys

解析 JSON 並將深度嵌套的屬性設置為列的理想方法是什么。

{"liked_food":
  {"A":
     {"-cheesecake":{"name": "cheesecake", "calories":500,"ingredients":"sugar, eggs, cheese, crackers","serving_size":7},
     "-donut":{"name": "donut", "calories":150,"ingredients":"sugar, eggs, yeast","serving_size":1.5}},
  "B":
     {"-cheesecake":{"name": "cheesecake", "calories":500,"ingredients":"sugar, eggs, cheese, crackers","serving_size":7}}
  }
}

目標:獲取上述 JSON 片段,其格式類似於以下 dataframe:

姓名 卡路里 配料 服務大小
一個 乳酪蛋糕 500 糖、雞蛋、奶酪、餅干 7
一個 甜甜圈 150 糖、雞蛋、酵母 1.5
乳酪蛋糕 500 糖、雞蛋、奶酪、餅干 7

只需將 JSON 文件轉換為 dataframe 即可得到: 在此處輸入圖像描述

使用 json_normalize 而不設置任何字段會產生: 在此處輸入圖像描述

我嘗試在元字段中設置屬性(即名稱、卡路里、成分和服務大小),並且在未設置任何字段的情況下使用 json_normalize 時,dataframe 看起來類似於 dataframe。

希望我忽略了一些簡單的事情。 提前致謝!

如果dct是您問題中的字典,則:

df = pd.DataFrame(
    [
        {"index": idx, **v}
        for idx, d in dct["liked_food"].items()
        for v in d.values()
    ],
).set_index("index")
print(df)

印刷:

             name  calories                    ingredients  serving_size
index                                                                   
A      cheesecake       500  sugar, eggs, cheese, crackers           7.0
A           donut       150             sugar, eggs, yeast           1.5
B      cheesecake       500  sugar, eggs, cheese, crackers           7.0

暫無
暫無

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

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