我返回了一些JSON数据,如下所示:(我无法更改结构)
[
{
"id": "d6aca8ac",
"owner": "test",
"sections": {
"summary": {
"id": "d417cd0e",
"notes": "",
"created_at": "2018-11-26T19:02:06Z"
},
"weather": {
"id": "7ef34660",
"notes": ""
},
"task": {
"id": "255d86dc",
"tasks": [
{
"id": "t1",
"total_hours": 176.0,
"updated_at": "2018-11-26T19:02:06Z",
"created_at": "2018-11-26T19:02:06Z"
},
{
"id": "t2",
"total_hours": 176.0,
"updated_at": "2018-11-26T19:02:06Z",
"created_at": "2018-11-26T19:02:06Z"
}
]
}
}
}
]
我正在尝试使用熊猫的json_normalise将任务放入这样的数据框中:
+----+-------------+----------------------+----------------------+
| id | total_hours | updated_at | created_at |
+----+-------------+----------------------+----------------------+
| t1 | 176 | 2018-11-26T19:02:06Z | 2018-11-26T19:02:06Z |
| t2 | 176 | 2018-11-26T19:02:06Z | 2018-11-26T19:02:06Z |
+----+-------------+----------------------+----------------------+
我有一个脚本,该脚本在文件夹中遍历数百个JSON文件,并根据文件名应用不同的记录路径,这对它们都有效,除了一种结构外,因此我非常想看看是否可以使用类似的东西(显然不起作用):
normalised_data = json_normalize(data=json_data, record_path=['sections', 'task', 'tasks'], meta=['id'], meta_prefix='parent_' , errors='ignore')
如果无法使用该命令样式,那么我最好的选择是什么?因此,我必须考虑分离出该特定文件。
谢谢
答案 0 :(得分:1)
由于record_path
不使用嵌套列表,因此以下所有路径实际上都试图索引第一个路径返回的键(即字符串),因此我假设您得到一个{ {1}}。
您必须在其自己的子列表中定义整个路径:
TypeError
pd.io.json.json_normalize(json_data, record_path=[['sections', 'task', 'tasks']])