如何读取深层嵌套JSON指定节点生成正确结构的pandas DataFrame
解决方案
直接把JSON根节点整体传入pd.DataFrame,会把顶层所有元素作为DataFrame的列/行来源,自然无法读取到深层嵌套的目标数据,只需要先定位到指定路径下的activities数组,再构造DataFrame即可。
修正代码
import json import pandas as pd with open(r'activity.json', encoding='utf-8') as json_file: raw_data = json.load(json_file) # 按确认的路径提取目标数据:根节点索引1 -> activities节点 activity_list = raw_data[1]['activities'] # 基于提取到的活动列表生成结构化DataFrame df = pd.DataFrame(activity_list) df.head(5)
深层嵌套字段处理
如果生成的DataFrame中user、activity这类列本身还是嵌套的字典/列表结构,可以用pd.json_normalize方法自动将嵌套字段打平为独立列,不需要手动逐个拆解:
# 自动扁平化所有嵌套字段,子属性会生成 父字段.子字段 格式的列名 df = pd.json_normalize(activity_list)
执行前可以先做简单校验:运行
print(type(raw_data), len(raw_data))确认根节点是列表且长度大于2,再运行print(raw_data[1].keys())确认activities键存在,避免出现索引越界、键不存在的报错。
内容的提问来源于stack exchange,提问作者cbhami
相关产品推荐
相关产品推荐

