我如何读取一个嵌套的JSON文件在Pandas Dataframe ?。我尝试与pd.json_normalize(results,record_path=
选项,但无法获得 auto_scan_date。我只是想了解路径和帮助在这种情况下。
下面是位示例JSON内容
[{
"owner": "admin@123",
"ipadd": "10.10.10.10",
"servername": "demoserver1.admin.com",
"Status": "live",
"config": [
{
"ipadd": "10.10.10.10",
"scan": {
"last_scan_date": "2000-10-10 23:53",
"auto_scan": [
{
"auto_scan_date": "2000-10-11 23:53"
}
],
"scan_status": "Enable",
"enable_datetime": "2000-09-20 23:53",
"scanned_by": "serveradmin"
},
"repo": "main"
}
],
"repo": "main"
},{
"owner": "admin@123",
"ipadd": "10.10.10.11",
"servername": "demoserver2.admin.com",
"Status": "live",
"config": [
{
"ipadd": "10.10.10.10",
"scan": {
"last_scan_date": "2000-10-10 23:53",
"auto_scan": [
{
"auto_scan_date": "2000-10-11 23:53"
}
],
"scan_status": "Enable",
"enable_datetime": "2000-09-20 23:53",
"scanned_by": "serveradmin"
},
"repo": "main"
}
],
"repo": "main"
}]
在输出下面查找
servername| ipadd| last_scan_date| auto_scan_date| scan_status| enable_datetime
--------------------------------------------------------------------------------
demoserver1.admin.com|10.10.10.10|2000-10-10 23:53|2000-10-11 23:53| Enable|2000-09-20 23:53
3条答案
按热度按时间kg7wmglp1#
一个简单的方法是使用
flatten_json
来扁平化json数据,将扁平化的数据传递给panda,当你在代码片段中print the commented df
时,你会看到所有以记录路径作为标题的列,重命名你感兴趣的列,并选择它们作为你想要的df。如果您更喜欢使用
json_normalize
,则需要提供一个ordered
列表,json_normalize会将其链接为路径以获取所需的值,因此,在record_path
和meta
参数的帮助下,链接的路径将成为列名。然后,您可以重命名列,最后对 Dataframe 重新排序。两种方法都将产生相同的输出。x一个一个一个一个x一个一个二个x
j9per5c42#
记录路径应该指向要扁平化的列表,在本例中为
auto_scan
。对于JSON数据中的每个列表级别,都在record_path
中添加一个嵌套列表:输出:
然后,必须提供
meta
参数以获取所需的所有其他列:输出:
为了获得您所要求的确切结果,我们以重命名/重新排序一些列来结束:
输出:
zf9nrax13#
您的数据,json_data
你可以试试这样的方法