如何解决如何使用通配符在 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 举报,一经查实,本站将立刻删除。