尽管浏览了许多示例和解决方案,但我还没有发现任何适用于该特定JSON模式的东西。
我有这行JSON来自API:
x = {'rows': [{'columns':
[{'name': 'User ID', 'value': '0000123'},
{'name': 'Last Name', 'value': 'Test1'}]},
{'columns':
[{'name': 'User ID', 'value': '0000567'},
{'name': 'Last Name', 'value': 'Test2'}]}]}
由于某种原因,我无法使用各种形式的json_normalize将其输出,我能得到的最接近的是将它们堆叠。
pd.json_normalize(data=x,record_path=['rows',['columns']])
有结果:
name value
0 User ID 0000123
1 Last Name Test1
2 User ID 0000567
3 Last Name Test2
但是我正在寻找它来输出:
User ID Last Name
0000123 Test1
0000567 Test2
我正在研究数据透视,但是没有可用的索引。我可以追加数组值吗?或者,可能只有更好的方法来创建数据框,因此可以轻松进行规范化。
感谢帮助。
某人可能有更好的答案,但是如果您检查json_normalize
(link)的来源,则“目前效率很低”,仅使用列表理解和循环。因此,通过手动规范化数据,您可能不会损失很多效率。这是一个为清楚起见编写的示例(即,如果您要检索大型json,则扩展性不佳)将遍历数据以构建字段:
normalized_data={'User ID':[],'Last Name':[]}
for row in x['rows']:
for column in row['columns']:
normalized_data[column['name']].append(column['value'])
df=pd.DataFrame(normalized_data)
print(df)
打印:
User ID Last Name
0 0000123 Test1
1 0000567 Test2
显然不理想,很想看看其他答案,但是鉴于json具有开放式格式,因此如果您不太幸运地拥有json结构,将很难找到一个开箱即用的pandas方法匹配大熊猫可以处理的那些。