通过Python JSON_规范化处理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

尽管查阅了大量的示例和解决方案,但我还没有找到任何适用于这个特定JSON模式的方法

我有一行来自API的JSON:

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方法