嵌套JSON到Pandas数据框架

ercv8c1e  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(114)
    • 输入JSON**
{
    "tables": {
        "Cloc": {
            "MINT": {
                "CANDY": {
                    "Mob": [{
                            "loc": "AA",
                            "loc2": ["AAA"]
                        },
                        {
                            "loc": "AA",
                            "loc2": ["AAA"]
   
                        }
                    ]
                }
            }
        },
        "T1": {
            "MINT": {
                "T2": {
                    "T3": [{
                        "loc": "AAA",
                        "loc2": ["AAA"]
                    }]
                }
            }
        }
    }
}
    • 预期产出**

=========================================
我尝试过使用pd. json_normalize()处理这个嵌套的JSON
数据= pd.数据框(嵌套_json ["表格"]["时钟"]["薄荷"]["糖果"]["移动"])
我不知道如何进行,任何帮助或指导是非常感谢。
非常感谢!!

7kqas0il

7kqas0il1#

假设只有最后一层包含一个字典列表,你可以简单地计算行,我们可以递归地这样做,所以它可以适用于任何嵌套层数。

rows = []
def find_rows(x, current_row):
    if isinstance(x, dict):
        for k,v in x.items():
            find_rows(v, current_row+[k])
    else: # we are at the final level, where we have a list of dictionaries
        for locs_map in x:
            for v in locs_map.values():
                rows.append(current_row+[v])

find_rows(d['tables'], [])
# Now I'm assuming you have only the number of levels as in your example
data = pd.DataFrame.from_records(rows, columns= ['Tables', 'L_1', 'L_2', 'L_3', 'L_4'])
data = data.loc[data.astype(str).drop_duplicates().index]

相关问题