如何将指定多层嵌套JSON读取为符合多索引要求的Pandas DataFrame
实现JSON转指定结构Pandas DataFrame的方案
实现思路
- 首先读取JSON文件加载为Python字典
- 遍历外层的ALPHA、BETA、THETA分类键,将每个条目里的日期、分类标识、成分数值拆分为标准化行记录
- 汇总所有记录生成DataFrame后设置双重索引,调整索引顺序匹配需求
完整实现代码
import pandas as pd import json # 1. 读取本地JSON文件,替换为你自己的文件路径 with open('data.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) # 2. 扁平化处理嵌套结构 records = [] for outer_key, entry_list in raw_data.items(): for entry in entry_list: # 拼接基础字段和成分数值 row = { 'date': entry['date'], 'category': outer_key } row.update(entry['constituents']) records.append(row) # 3. 生成DataFrame并设置索引 df = pd.DataFrame(records) # *可选操作:将date转为datetime类型,方便后续时间维度计算,不需要可以删除该行 df['date'] = pd.to_datetime(df['date']) # 设置第一级索引为date,第二级索引为外层分类键 df = df.set_index(['date', 'category']).sort_index()
输出结果验证
最终生成的DataFrame结构如下,完全符合需求:
| BBB | EEE | BTB | YUY | |
|---|---|---|---|---|
| 2021-06-22 | ALPHA | 0 | 1 | 1 |
| BETA | 1 | 1 | 1 | |
| THETA | 0 | 1 | 1 | |
| 2021-08-20 | THETA | 0 | 1 | 1 |
| 2021-09-07 | ALPHA | 0 | 0 | 0 |
| BETA | 1 | 1 | 1 | |
| THETA | 0 | 1 | 1 |
内容的提问来源于stack exchange,提问作者finstats
相关产品推荐
相关产品推荐

