通过Python JSON_规范化处理JSON嵌套值的问题
尽管查阅了大量的示例和解决方案,但我还没有找到任何适用于这个特定JSON模式的方法 我有一行来自API的JSON:通过Python JSON_规范化处理JSON嵌套值的问题,python,json,pivot,normalize,Python,Json,Pivot,Normalize,尽管查阅了大量的示例和解决方案,但我还没有找到任何适用于这个特定JSON模式的方法 我有一行来自API的JSON: x = {'rows': [{'columns': [{'name': 'User ID', 'value': '0000123'}, {'name': 'Last Name', 'value': 'Test1'}]}, {'columns': [{'n
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_规范化将其输出,我能得到的最接近的结果就是它们的堆栈
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
我正在查看pivot,但没有可用的索引。我可以附加数组值吗?
或者,可能有更好的方法来创建数据帧,这样就可以轻松地进行规范化
感谢您的帮助。有人可能会有更好的答案,但如果您检查
json_normalize
()的源代码,“目前效率极低”,只使用列表理解和循环。因此,手动规范化数据可能不会降低多少效率。下面是一个为清晰起见而编写的示例(即,如果检索大型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能够处理的结构相匹配,则很难找到现成的pandas方法 有人可能会有更好的答案,但如果你检查
json_normalize
()的源代码,“目前效率极低”,只使用列表理解和循环。因此,手动规范化数据可能不会降低多少效率。下面是一个为清晰起见而编写的示例(即,如果检索大型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能够处理的结构相匹配,则很难找到现成的pandas方法