【发布时间】:2018-07-13 15:09:23
【问题描述】:
我有 4 级嵌套字典,想转换为 pandas 数据框或面板数据形式以提取 csv。我希望每个细胞都有信息 来自嵌套字典。
我有像下面这样的嵌套字典,但在实际数据中有更多的键和值。
{2008: {'Barack Obama': {1: {'Author': 'Barack Obama',
'City': [],
'Title': 'Keynote Address at the 2004 Democratic National Convention',
'Type': 'address',
'Year': 2008},
2: {'Author': 'Barack Obama',
'City': ['Springfield'],
'Title': 'Remarks Announcing Candidacy for President in Springfield, Illinois',
'Type': 'remarks',
'Year': 2008},
3: {'Author': 'Barack Obama',
'City': ['Chicago'],
'Title': 'Remarks at the AIPAC Policy Forum in Chicago',
'Type': 'remarks',
'Year': 2008}},
'Bill Richardson': {1: {'Author': 'Bill Richardson',
'City': [],
'Title': 'Iraq Speech to New Hampshire Democratic State Party State Central Committee',
'Type': 'speech',
'Year': 2008},
2: {'Author': 'Bill Richardson',
'City': [],
'Title': 'Address to the DNC Winter Meeting',
'Type': 'address',
'Year': 2008},
3: {'Author': 'Bill Richardson',
'City': [],
'Title': 'Speech: The New Realism and the Rebirth of American Leadership',
'Type': 'speech',
'Year': 2008}}},
2012: {'Barack Obama': {1: {'Author': 'Barack Obama',
'City': ['Parma'],
'Title': '535 - Remarks at a Campaign Rally in Parma, Ohio',
'Type': 'remarks',
'Year': '2012'},
2: {'Author': 'Barack Obama',
'City': ['Sandusky'],
'Title': '534 - Remarks at a Campaign Rally in Sandusky, Ohio',
'Type': 'remarks',
'Year': '2012'},
3: {'Author': 'Barack Obama',
'City': [],
'Title': '533 - Remarks at a Campaign Rally in Maumee, Ohio',
'Type': 'remarks',
'Year': '2012'}}}
我想转换成这样的数据框。
Year Author1 No. Author City Title Type Year
2008 Barack Oabama 1 Barack Oabama [] .... address 2008
2008 Barack Oabama 2 Barack Oabama ['Springfield'] .... remarks 2008
2008 Barack Oabama 3 Barack Oabama ['Chicago'] .... remarks 2008
.......................
2008 Bill Richardson 1 Bill Richardson [] .... remarks 2008
2008 Bill Richardson 2 Bill Richardson [] .... address 2008
2008 Bill Richardson 3 Bill Richardson [] .... speech 2008
.............
2012 Barack Oabama 1 Barack Oabama ['Parma'] .... remarks 2012
2012 Barack Oabama 2 Barack Oabama ['Sandusky'] .... remarks 2012
2012 Barack Oabama 3 Barack Oabama [] .... remarks 2012
.....................
我已经阅读了一些使用 for 循环制作数据框的答案,但它提供了第一列合并索引,但我确实希望每个单元格都有来自字典的信息。有什么建议?谢谢!!
我已经尝试过这段代码,但这并没有给出我想要的,它给了我第一列上的合并索引单元格,它不适用于 4 级嵌套字典。我又修改了一个for循环,但是最终的形式有三个元组,这不是我想要的。
pd.DataFrame.from_dict({(i,j): user_dict[i][j]
for i in user_dict.keys()
for j in user_dict[i].keys()},
orient='index')
【问题讨论】:
-
第一个建议是将您迄今为止尝试过的内容发布为minimal reproducible example。
标签: python pandas dictionary dataframe nested