【发布时间】:2020-07-09 13:18:04
【问题描述】:
我是 Python 和 JSON 数据结构的新手,正在寻求帮助
我已经能够创建一些调用 Web API 并使用 json_normalize() 成功地将返回的 JSON 数据 (report_rows) 转换为数据帧的 Python 代码
我在将 JSON 列名转换和排序为数据框列名时遇到了一些问题,我想知道是否可以在以下方面获得帮助...
- 从 JSON 数据中获取列名 - 在数据框中,我想将列名:c1、c2、c3 等转换为 RECORD_NO、REF_RECORD_NO、SOV_LINEITEM_NO。列名在 JSON 数据 [data][report_header][cXX][name] 中,其中 cXX 是列号
- 对列名进行排序 - 我想对数据框列进行排序,所以它不是 c1、c10、c11、c12、c2、c3 等,而是 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
}
【问题讨论】:
-
我能够通过执行以下操作来解决我的问题
标签: json python-3.x dataframe nested multiple-columns