You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定JSON转换为二级Multi-index的Pandas DataFrame?

构建指定二级Multi-index DataFrame解决方案

原始数据

data = {
    'Low': {
        '2023.07.01': {"u": "mo", 'N': 1, 'O': 2, "PN": 22, "PO": 34},
        '2023.07.02': {"u": "no", 'N': 1, 'O': 2, "PN": 22, "PO": 34}
    },
    'Medium': {
        '2023.07.01': {"u": "no", 'N': 1, 'O': 2, "PN": 22, "PO": 34},
        '2023.07.02': {"u": "mo", 'N': 1, 'O': 2, "PN": 22, "PO": 34}
    },
    'High': {
        '2023.07.01': {"u": "no", 'N': 122, 'O': 2, "PN": 212, "PO": 334},
        '2023.07.02': {"u": "mo", 'N': 13, 'O': 2, "PN": 2, "PO": 342}
    }
}

实现步骤

方法:先转长格式再重塑宽格式

这种方式更直观,便于精准控制最终的索引和列结构:

  1. 拆解嵌套字典为长格式DataFrame
    将多层嵌套的数据转换为单条记录的行格式,为后续重塑做准备:

    import pandas as pd
    
    rows = []
    for level, date_data in data.items():
        for date, values in date_data.items():
            rows.append({
                'Date': date,
                'U': values['u'],
                'Level': level,
                'N': values['N'],
                'O': values['O'],
                'PN': values['PN']
            })
    
    long_df = pd.DataFrame(rows)
    
  2. 重塑为二级列索引的宽格式
    使用pivot方法将Date和U设为行索引,Level和指标设为二级列索引:

    wide_df = long_df.pivot(index=['Date', 'U'], columns='Level')
    
  3. 调整列顺序并重复PN列
    按照需求构造目标列顺序,复制PN列到指定位置:

    # 定义目标列顺序:每个Level下依次为N、PN、O、PN
    desired_cols = []
    for level in ['Low', 'Medium', 'High']:
        desired_cols.extend([(level, 'N'), (level, 'PN'), (level, 'O'), (level, 'PN')])
    
    # 复制PN列以满足重复展示需求
    final_df = wide_df.copy()
    for level in ['Low', 'Medium', 'High']:
        final_df[(level, 'PN')] = wide_df[(level, 'PN')]
    
    # 按目标顺序重新排列列
    final_df = final_df[desired_cols]
    
    # 可选:填充空值(根据业务需求选择,示例用0填充)
    final_df.fillna(0, inplace=True)
    

最终结果

运行后final_df的结构如下:

Low               Medium             High         
                N  PN  O  PN        N  PN  O  PN         N   PN  O   PN
Date       U                                                        
2023.07.01 mo   1  22  2  22        0   0  0   0         0    0  0    0
           no   0   0  0   0        1  22  2  22      122  212  2  212
2023.07.02 mo   0   0  0   0        1  22  2  22        13    2  2    2
           no   1  22  2  22        0   0  0   0         0    0  0    0

内容的提问来源于stack exchange,提问作者ASHu2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:00:14