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

如何将指定字典转换为类似面板数据的Multi-index Pandas DataFrame?

如何将嵌套字典转换为带MultiIndex的Pandas面板DataFrame

嘿,这个问题我太熟了!要把这种以元组为键的嵌套字典转成符合面板数据格式的多级索引DataFrame,Pandas提供了非常简洁的方法,我给你一步步演示:

步骤1:导入依赖并定义原始数据

首先我们先导入Pandas,然后把你的原始字典整理成可运行的代码格式:

import pandas as pd

# 你的原始字典数据
original_data = {
    ('20170330', 'A'): {'earn': '16.02', 'lstdt': '2014/06/16', 'gap': '0.21','ocha': '5.44', 'nav': '77'},
    ('20170331', 'A'): {'earn': '25.68', 'lstdt': '2015/07/29','gap': '-1.41','ocha': '10.24', 'nav': '106'},
    ('20170331', 'B'): {'earn': '-', 'lstdt': '2016/09/12', 'gap':'-0.08', 'ocha': '0.79','nav': '145'}
}

步骤2:转换为DataFrame并设置多级索引

我们可以直接用from_dict方法,指定orient='index'让字典的键(也就是元组)成为行索引,然后给这个索引设置名称,转换成规整的多级索引:

# 转换为DataFrame,元组自动成为行索引
df = pd.DataFrame.from_dict(original_data, orient='index')

# 将行索引转换为命名的多级索引
df.index = pd.MultiIndex.from_tuples(df.index, names=['date', 'name'])

嫌上面的写法有点繁琐?可以用更简洁的rename_axis一步到位给索引命名:

df = pd.DataFrame.from_dict(original_data, orient='index').rename_axis(['date', 'name'])

查看最终结果

运行上面的代码后,打印df就能得到你想要的面板数据格式:

earn      lstdt   gap   ocha  nav
date     name                                     
20170330 A      16.02  2014/06/16  0.21   5.44   77
20170331 A      25.68  2015/07/29 -1.41  10.24  106
         B          -  2016/09/12 -0.08   0.79  145

如果之后需要把date和name从索引转为普通列,只需要执行df.reset_index()就可以轻松实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:26:38