Python 如何从深度嵌套的字典创建数据帧?
我有一个嵌套字典,它有5个级别masterdict={a:{b:{c:{d:{e:}},我正在尝试创建一个平面数据帧 当我运行以下代码时:Python 如何从深度嵌套的字典创建数据帧?,python,dictionary,pandas,Python,Dictionary,Pandas,我有一个嵌套字典,它有5个级别masterdict={a:{b:{c:{d:{e:}},我正在尝试创建一个平面数据帧 当我运行以下代码时: masterDF = pd.DataFrame() for a in masterdict: for b in masterdict[a]: for c in masterdict[a][b]: for d in masterdict[a][b][c]: eDF = pd.DataFrame(ma
masterDF = pd.DataFrame()
for a in masterdict:
for b in masterdict[a]:
for c in masterdict[a][b]:
for d in masterdict[a][b][c]:
eDF = pd.DataFrame(masterdict[a][b][c][d])
eDF['level4'] = str(d)
eDF['level3'] = str(c)
eDF['level2'] = str(b)
eDF['level1'] = str(a)
masterDF = masterDF.append(eDF)
我得到以下错误:
---------------------------------------------------------------------------
PandasError Traceback (most recent call last)
<ipython-input-13-cc9930935c64> in <module>()
5 for c in masterdict[a][b]:
6 for d in masterdict[a][b][c]:
----> 7 eDF = pd.DataFrame(masterdict[a][b][c][d])
8 eDF['level4'] = str(d)
9 eDF['level3'] = str(c)
C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in __init__(self, data, index, columns, dtype, copy)
275 copy=False)
276 else:
--> 277 raise PandasError('DataFrame constructor not properly called!')
278
279 NDFrame.__init__(self, mgr, fastpath=True)
PandasError: DataFrame constructor not properly called!
我不确定这是否是将嵌套字典展平的正确代码,但如果是,请您建议我可能做错了什么
谢谢。我写这篇文章是为了把嵌套字典展平。也许对你也有帮助。pk变为前一个键的字符串,当前键加上一个“连接键”。a将成为一个项目列表
a=[]
heading=[]
def flat_dict(dic,pk=None):
for k,v in dic.items():
if isinstance(v, dict):
try:
flat_dict(v,pk+"'"+k)
except:
flat_dict(v,k)
else:
a.append(v)
try:
heading.append(pk+"'"+k)
# print pk+'\''+k,v
except:
heading.append(k)
# print k,v
你能给我们提供一个模拟对象吗?我怀疑这是一个json文件?