Я новичок в структурах данных Python и JSON и искал некоторую помощь
Мне удалось создать код Python, который вызывает веб-API и преобразует возвращаемый JSON данные (report_rows) в фрейм данных успешно с использованием json_normalize ()
У меня возникли некоторые проблемы с преобразованием и сортировкой имен столбцов JSON в имена столбцов фрейма данных, и мне было интересно, могу ли я получить некоторую помощь по следующему ...
- Получить имена столбцов из JSON данных - В кадре данных я хотел бы преобразовать имена столбцов: c1, c2, c3, et c в RECORD_NO, REF_RECORD_NO, SOV_LINEITEM_NO. Имена столбцов находятся в JSON data [data] [report_header] [cXX] [name], где cXX - номер столбца
- Сортировать имена столбцов - Я хотел бы заказать столбцы фрейма данных, поэтому вместо c1, c10, c11, c12, c2, c3, et c это c1, c2, c3 ... c10, c11, c12
Если кто-то может предоставьте некоторую помощь, мы будем очень признательны
Заранее спасибо
Python Код
json_data = json.loads(res.read())
data = pd.json_normalize(json_data['data'], record_path=['report_row'])
print(data)
, который выводит следующее
c1 c10 c11 ... c7 c8 c9
0 CON-0000001 71 VEN-0000001 ... Build IT System Contract 123 Pending
1 CON-0000002 72 VEN-0000002 ... Build IT System Contract XYZ Approved
JSON Данные
"data": [
{
"report_header": {
"c11": {
"name": "VENDOR_RECORD",
"type": "java.lang.String"
},
"c10": {
"name": "VENDOR_ID",
"type": "java.lang.Integer"
},
"c12": {
"name": "VENDOR_NAME",
"type": "java.lang.String"
},
"c1": {
"name": "RECORD_NO",
"type": "java.lang.String"
},
"c2": {
"name": "REF_RECORD_NO",
"type": "java.lang.String"
},
"c3": {
"name": "SOV_LINEITEM_NO",
"type": "java.lang.String"
},
"c4": {
"name": "REF_ITEM",
"type": "java.lang.String"
},
"c5": {
"name": "PROJECTNUMBER",
"type": "java.lang.String"
},
"c6": {
"name": "PROJECTNAME",
"type": "java.lang.String"
},
"c7": {
"name": "TITLE",
"type": "java.lang.String"
},
"c8": {
"name": "CONTRACT_NO",
"type": "java.lang.String"
},
"c9": {
"name": "STATUS",
"type": "java.lang.String"
}
},
"report_row": [
{
"c1": "CON-0000001",
"c10": "71 ",
"c11": "VEN-0000001",
"c12": "Microsoft",
"c2": "",
"c3": "1",
"c4": "",
"c5": "P-0037",
"c6": "Project ABC",
"c7": "Build IT System",
"c8": "Contract 123",
"c9": "Pending"
},
{
"c1": "CON-0000002",
"c10": "72 ",
"c11": "VEN-0000002",
"c12": "Google",
"c2": "",
"c3": "1.1",
"c4": "",
"c5": "P-0037",
"c6": "Project ABC",
"c7": "Build IT System",
"c8": "Contract XYZ",
"c9": "Approved"
}
]
}
],
"message": [
"OK"
],
"status": 200
}