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调用中使用循环。非常感谢。