gpt4 book ai didi

python - 使用 json_normalize 通过嵌套数组规范化 json

转载 作者:行者123 更新时间:2023-12-01 07:26:08 25 4
gpt4 key购买 nike

我想标准化以下 JSON:

[
{
"studentId": 1,
"studentName": "James",
"schools": [
{
"schoolId": 1,
"classRooms": [
{
"classRoomId": {
"id": 1,
"floor": 2
}
},
{
"classRoomId": {
"id": 3
}
},
],
"teachers": [
{
"teacherId": 1,
"teacherName": "Tom"
},
{
"teacherId": 2,
"teacherName": "Sarah"
}
]
},
{
"schoolId": 2,
"classRooms": [
{
"classRoomId": {
"id": 4
}
}
],
"teachers": [
{
"teacherId": 1,
"teacherName": "Tom"
},
{
"teacherId": 2,
"teacherName": "Sarah"
},
{
"teacherId": 3,
"teacherName": "Tara"
}
]
}
]
}
]

我想得到下面的Python表格(表格形式):

studentId studentName schoolId classRoomId.id classRoomId.floor teacherId 
teacherName
1 James 1 1 2 1 Tom
1 James 1 1 2 2 Sarah
1 James 1 3 1 Tom
1 James 1 3 2 Sarah
1 James 2 4 1 Tom
1 James 2 4 2 Sarah
1 James 2 4 3 Tara

我尝试使用 Pandas json_normalize 函数,如下所示:

df1 = json_normalize(test1, ["schools","teachers"], ["studentId", "studentName",["schools","teachers"]])
df2 = json_normalize(test1, ["schools","classRooms"], ["studentId", "studentName",["schools","classRooms"]])
df = pd.concat([df1,df2],axis=1)

但这并没有给我我需要的结构。

它不必在 Pandas 中,Python 中的任何其他库或代码都可以。任何帮助都是感激不尽。谢谢。

最佳答案

因为 classRoomsteachers 形成 JSON 的两个不同的子树,因此您必须解析它们两次:

classrooms = pd.io.json.json_normalize(json_data, ['schools', 'classRooms'], meta=[
'studentId',
'studentName',
['schools', 'schoolId']
])

teachers = pd.io.json.json_normalize(json_data, ['schools', 'teachers'], meta=[
'studentId',
['schools', 'schoolId']
])

# Merge and rearrange the columns in the order of your sample output
classrooms.merge(teachers, on=['schools.schoolId', 'studentId']) \
[['studentId', 'studentName', 'schools.schoolId', 'classRoomId.id', 'classRoomId.floor', 'teacherId', 'teacherName']]

关于python - 使用 json_normalize 通过嵌套数组规范化 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57438540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com