如何将指定字典转换为类似面板数据的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
相关产品推荐
相关产品推荐

