【问题标题】:Processing a nested dict and list Json to a DataFrame将嵌套的字典和列表 Json 处理为 DataFrame
【发布时间】:2019-05-01 08:57:17
【问题描述】:

我有一个这样的 json 对象:

[{"ID": "101",
  "OagCode": "1000",
  "house": [{"from": [{"CneeCode":"30100"}], "ShprCode": "20100"}]},
 {"ID": "102",
  "OagCode": "1001",
  "house": [{"from": [{"CneeCode":"30101"}], "ShprCode": "20101"},
            {"from": [{"CneeCode":"30102"}], "ShprCode": "20102"},
            {"from": [{"CneeCode":"30103"}], "ShprCode": "20103"}]}]

我想将此 json 转换为数据框,使内部列表扩展并形成具有适当值的数据框,如下所示:

+-----+---------+----------+----------+
| ID  | OagCode | CneeCode | ShprCode |
+-----+---------+----------+----------+
| 101 | 1000    | 30100    | 20100    |
| 102 | 1001    | 30101    | 20101    |
| 102 | 1001    | 30102    | 20102    |
| 102 | 1001    | 30103    | 20103    |
+-----+---------+----------+----------+

有没有办法在不使用循环的情况下将上述 json 转换为数据帧? 我试过orient,还是不行。

【问题讨论】:

    标签: json python-3.x pandas dataframe data-cleaning


    【解决方案1】:

    使用json_normalize:

    from pandas.io.json import json_normalize
    
    df = json_normalize(j,record_path='house',meta=['ID','OagCode'])
    print (df)
      CneeCode ShprCode   ID OagCode
    0    30100    20100  101    1000
    1    30101    20101  102    1001
    2    30102    20102  102    1001
    3    30103    20103  102    1001
    

    【讨论】:

    • @thanatoz - 不幸的是 docs 很差,我找到了一些信息 here
    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 2019-06-27
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2017-12-26
    相关资源
    最近更新 更多