Python 如何使用通配符在pandas中展平json?

Python 如何使用通配符在pandas中展平json?,python,json,pandas,Python,Json,Pandas,考虑到这一点: "World_Regions": { "Americas": { "0": { "Name": "North America", "Category_Average": "54.53", "Stocks_%": "55

考虑到这一点:

"World_Regions": {
    "Americas": {
        "0": {
            "Name": "North America",
            "Category_Average": "54.53",
            "Stocks_%": "55.44",
            "Benchmark": "59.02"
        },
        "1": {
            "Name": "Latin America",
            "Category_Average": "0.87",
            "Stocks_%": "1.14",
            "Benchmark": "0.93"
        }
    },
    "Greater Asia": {
        "0": {
            "Name": "Japan",
            "Category_Average": "6.58",
            "Stocks_%": "3.74",
            "Benchmark": "7.76"
        },
        "1": {
            "Name": "Australasia",
            "Category_Average": "1.79",
            "Stocks_%": "7.45",
            "Benchmark": "2.17"
        },
        "2": {
            "Name": "Asia Developed",
            "Category_Average": "5.56",
            "Stocks_%": "7.27",
            "Benchmark": "4.57"
        },
        "3": {
            "Name": "Asia Emerging",
            "Category_Average": "6.63",
            "Stocks_%": "2.96",
            "Benchmark": "6.58"
        }
    },
我想得到这个结果:

Name    Category_Average    Stocks_%    Benchmark
0   North America   54.53   55.44   59.02
1   Latin America   0.87    1.14    0.93
2   Japan   6.58    3.74    7.76
3   Australasia 1.79    7.45    2.17
4   Asia Developed  5.56    7.27    4.57
6   Asia Emerging   6.63    2.96    6.58
但不幸的是,地区名称(美洲/大亚洲)的不同名称造成了一个问题。 我正试图在一个命令中清晰地实现这一点,现在我可以通过执行以下操作获得结果:

pd.DataFrame.from_dict(jsonFile['World_Regions']['Greater Asia']).transpose()
        Name    Category_Average    Stocks_%    Benchmark
    0   Japan   6.58    3.74    7.76
    1   Australasia 1.79    7.45    2.17
    2   Asia Developed  5.56    7.27    4.57
    3   Asia Emerging   6.63    2.96    6.58

然后对美洲也一样,然后合并数据帧。是否有更直接的方法(即一个命令?

您可以尝试连接各个值:

pd.concat([pd.DataFrame(x).T for x in a['World_Regions'].values()],
          ignore_index=True)
或在传递到数据帧之前展平数据:

pd.DataFrame([y for x in a['World_Regions'].values()
                for y in x.values() ])
输出:

             Name Category_Average Stocks_% Benchmark
0   North America            54.53    55.44     59.02
1   Latin America             0.87     1.14      0.93
2           Japan             6.58     3.74      7.76
3     Australasia             1.79     7.45      2.17
4  Asia Developed             5.56     7.27      4.57
5   Asia Emerging             6.63     2.96      6.58

您可以尝试连接各个值:

pd.concat([pd.DataFrame(x).T for x in a['World_Regions'].values()],
          ignore_index=True)
或在传递到数据帧之前展平数据:

pd.DataFrame([y for x in a['World_Regions'].values()
                for y in x.values() ])
输出:

             Name Category_Average Stocks_% Benchmark
0   North America            54.53    55.44     59.02
1   Latin America             0.87     1.14      0.93
2           Japan             6.58     3.74      7.76
3     Australasia             1.79     7.45      2.17
4  Asia Developed             5.56     7.27      4.57
5   Asia Emerging             6.63     2.96      6.58

太酷了,谢谢,我不知道我可以在DF调用中使用循环。谢谢,太酷了,谢谢,我不知道我可以在DF调用中使用循环。非常感谢。