微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用通配符在 Pandas 中展平 json?

鉴于此 json:

"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)

或者在传递给 DataFrame 之前展平数据:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?