首页 > 解决方案 > 如何从不均匀层字典创建多级数据框?

问题描述

我有一本字典:

dic = {'key': 1, 'detail': {'name': 'Ken', 'sex': 'M', 'location': {'lat': 10, 'lng': 20}, 'family': {'sister': {'name': 'Ann', 'location': {'lat': 30, 'lng': 40}}}}}

如何获得以下数据框?

在此处输入图像描述

标签: pythondataframedictionary

解决方案


使用json_normalize()++属性pd.MultiIndex.from_frame()'columns'

df=pd.json_normalize(dic)
idx=pd.DataFrame(df.columns.str.split('.',expand=True).tolist()).fillna('')
df.columns=pd.MultiIndex.from_frame(idx,names=[None]*len(idx.columns))

的输出df

在此处输入图像描述

或者

但它将显示NaN在列中:

df=pd.json_normalize(dic)
df.columns=df.columns.str.split('.',expand=True)

的输出df

在此处输入图像描述


推荐阅读