在Python中嵌套字典到DataFrame



我正在尝试将以下字典放入特定的DataFrame中。

字典的结构如下:

test = {'JTTIX US Equity': 
{'HB_ASSET_CLASS_ALLOCATION': 
{'Equity': '32.14642',
'Debt': '60.890407'},
'HB_MARKET_CAP_ALLOCATION': 
{'Small-cap': '0.776239',
'Mid-cap': '10.81831',
'Large-cap': '88.027725'}}}

我试图达到的最终数据帧是:

BBG_ID              FIELD                       TYPE                        VALUE
JTTIX US Equity     HB_ASSET_CLASS_ALLOCATION   Equity                      32.14642
JTTIX US Equity     HB_ASSET_CLASS_ALLOCATION   Debt                        60.890407
JTTIX US Equity     HB_MARKET_CAP_ALLOCATION    Small-cap                   0.776239
JTTIX US Equity     HB_MARKET_CAP_ALLOCATION    Mid-cap                     10.81831
JTTIX US Equity     HB_MARKET_CAP_ALLOCATION    Large-cap                   88.027725

我尝试了这个不错的答案的所有选项在这里将字典列表转换为pandas DataFrame,但我仍然无法达到我想要的最终格式。

我认为我可以通过创建一个循环来做到这一点,但我想仔细检查一下是否有方法可以避免它,因为实际的字典非常大。

这是使用stack的一种方法。本质上是构造数据框架,stack它;再次构造一个DataFrame,再次stack;thenreset_index:

tmp = pd.DataFrame.from_dict(test, orient='index').stack()
out = pd.DataFrame(tmp.tolist(), tmp.index).stack().rename_axis(index=['BBG_ID','FIELD','TYPE']).reset_index(name='VALUE')

输出:

BBG_ID                      FIELD       TYPE      VALUE
0  JTTIX US Equity  HB_ASSET_CLASS_ALLOCATION     Equity   32.14642
1  JTTIX US Equity  HB_ASSET_CLASS_ALLOCATION       Debt  60.890407
2  JTTIX US Equity   HB_MARKET_CAP_ALLOCATION  Small-cap   0.776239
3  JTTIX US Equity   HB_MARKET_CAP_ALLOCATION    Mid-cap   10.81831
4  JTTIX US Equity   HB_MARKET_CAP_ALLOCATION  Large-cap  88.027725

相关内容

  • 没有找到相关文章

最新更新