Python json_使用多个记录路径进行规范化
我使用的是这里给出的Python json_使用多个记录路径进行规范化,python,json,pandas,normalize,Python,Json,Pandas,Normalize,我使用的是这里给出的json\u normalize文档中给出的示例,不幸的是,我无法粘贴我的实际json,但这个示例有效。从文档中粘贴: data = [{'state': 'Florida', 'shortname': 'FL', 'info': {'governor': 'Rick Scott'}, 'counties': [{'name': 'Dade', 'population': 12345}, {'name': 'B
json\u normalize
文档中给出的示例,不幸的是,我无法粘贴我的实际json,但这个示例有效。从文档中粘贴:
data = [{'state': 'Florida',
'shortname': 'FL',
'info': {'governor': 'Rick Scott'},
'counties': [{'name': 'Dade', 'population': 12345},
{'name': 'Broward', 'population': 40000},
{'name': 'Palm Beach', 'population': 60000}]},
{'state': 'Ohio',
'shortname': 'OH',
'info': {'governor': 'John Kasich'},
'counties': [{'name': 'Summit', 'population': 1234},
{'name': 'Cuyahoga', 'population': 1337}]}]
result = json_normalize(data, 'counties', ['state', 'shortname',
['info', 'governor']])
result
name population state shortname info.governor
0 Dade 12345 Florida FL Rick Scott
1 Broward 40000 Florida FL Rick Scott
2 Palm Beach 60000 Florida FL Rick Scott
3 Summit 1234 Ohio OH John Kasich
4 Cuyahoga 1337 Ohio OH John Kasich
如果JSON是下面的JSON,而info
是数组而不是dict,该怎么办
data = [{'state': 'Florida',
'shortname': 'FL',
'info': [{'governor': 'Rick Scott'},
{'governor': 'Rick Scott 2'}],
'counties': [{'name': 'Dade', 'population': 12345},
{'name': 'Broward', 'population': 40000},
{'name': 'Palm Beach', 'population': 60000}]},
{'state': 'Ohio',
'shortname': 'OH',
'info': [{'governor': 'John Kasich'},
{'governor': 'John Kasich 2'}],
'counties': [{'name': 'Summit', 'population': 1234},
{'name': 'Cuyahoga', 'population': 1337}]}]
如何使用json\u normalize
获得以下输出:
name population state shortname info.governor
0 Dade 12345 Florida FL Rick Scott
1 Dade 12345 Florida FL Rick Scott 2
2 Broward 40000 Florida FL Rick Scott
3 Broward 40000 Florida FL Rick Scott 2
4 Palm Beach 60000 Florida FL Rick Scott
5 Palm Beach 60000 Florida FL Rick Scott 2
6 Summit 1234 Ohio OH John Kasich
7 Summit 1234 Ohio OH John Kasich 2
8 Cuyahoga 1337 Ohio OH John Kasich
9 Cuyahoga 1337 Ohio OH John Kasich 2
或者如果有其他方法,请告诉我。
json\u normalize
是为了方便而不是灵活性而设计的。它不能处理所有形式的JSON(JSON太灵活了,无法为其编写通用解析器)
调用两次json\u normalize
然后合并怎么样。这假设每个状态在JSON中只出现一次:
counties = json_normalize(data, 'counties', ['state', 'shortname'])
governors = json_normalize(data, 'info', ['state'])
result = counties.merge(governors, on='state')
是的,合并是一种很好的方法,它可以与这个JSON一起工作,因为状态是唯一的,但不是在我的原始JSON中,因为每个记录都没有唯一的标识符。但是我同意你关于json规范化的说法,因为它更方便,并不总是有效的。到底是什么问题?您知道使用
json\u nomalize()
是否可以做到这一点吗?这就是我想知道的。如果可以,请使用json\u规范化。