如何使用Pandas将JSON文件转换为多个DataFrame?
如何将包含多个数组的JSON文件转为独立的Pandas DataFrame
问题场景
需要导入的JSON文件内容:
{"TableA": [{"code": "x1","value": 120},{"code": "x2","value": 100}], "TableB": [{"code": "y1","value": 220},{"code": "y2","value": 230}]}
预期得到两个独立的结构化DataFrame:
>>> TableA code value 0 x1 120 1 x2 100 >>> TableB code value 0 y1 220 1 y2 230
但使用pd.read_json("TableAB.json")读取后,得到的是包含字典单元格的DataFrame,不符合预期:
>>> Tables = pd.read_json("TableAB.json") >>> Tables TableA TableB 0 {'code': 'x1', 'value': 120} {'code': 'y1', 'value': 220} 1 {'code': 'x2', 'value': 100} {'code': 'y2', 'value': 230}
解决方案
方法1:直接从JSON字典生成DataFrame
先将JSON文件读取为Python字典,再针对每个键对应的数组直接创建DataFrame:
import pandas as pd import json # 读取JSON文件为字典对象 with open("TableAB.json", "r") as file: json_data = json.load(file) # 生成目标DataFrame TableA = pd.DataFrame(json_data["TableA"]) TableB = pd.DataFrame(json_data["TableB"])
方法2:解析已读取的DataFrame列
如果已经通过pd.read_json得到了Tables,可以用pd.json_normalize解析每个列中的字典数据:
import pandas as pd Tables = pd.read_json("TableAB.json") TableA = pd.json_normalize(Tables["TableA"]) TableB = pd.json_normalize(Tables["TableB"])
两种方法都能得到你需要的结构化DataFrame。
内容的提问来源于stack exchange,提问作者CLeite
相关产品推荐
相关产品推荐

