+-

my_dict = { 'company_a': [],
'company_b': [ {'gender': 'Male',
'investor': True,
'name': 'xyz',
'title': 'Board Member'} ],
'company_c': [],
'company_m': [ {'gender': 'Male',
'investor': None,
'name': 'abc',
'title': 'Advisor'},
{'gender': 'Male',
'investor': None,
'name': 'opq',
'title': 'Advisor'} ],
'company_x': [],
'company_y': [] }
如何将上述Python字典转换为具有以下列的Pandas数据框:公司,性别,投资者,姓名,职称
列公司将由my_dict的顶级键填充.其他列将使用数组中字典中的值填充.
我已经尝试过pd.DataFrame.from_dict(my_dict,orient =’index’),但是它没有给我我想要的东西.
最佳答案
此版本使用“无”填充所有缺少的值:
data = {'company': [], 'gender': [], 'investor': [], 'name': [], 'title': []}
for k, v in my_dict.items():
for entry in v:
data['company'].append(k)
if not v:
data['company'].append(k)
for name in ['gender', 'investor', 'name', 'title']:
has_entry = False
for entry in v:
has_entry = True
data[name].append(entry.get(name))
if not has_entry:
data[name].append(None)
df = pd.DataFrame(data)
print(df)
输出:
company gender investor name title
0 company_a None None None None
1 company_y None None None None
2 company_b Male True xyz Board Member
3 company_c None None None None
4 company_x None None None None
5 company_m Male None abc Advisor
6 company_m Male None opq Advisor
您还可以用NaN替换所有None:
print(df.fillna(np.nan))
输出:
company gender investor name title
0 company_a NaN NaN NaN NaN
1 company_y NaN NaN NaN NaN
2 company_b Male True xyz Board Member
3 company_c NaN NaN NaN NaN
4 company_x NaN NaN NaN NaN
5 company_m Male NaN abc Advisor
6 company_m Male NaN opq Advisor
点击查看更多相关文章
转载注明原文:带有嵌套字典列表的字典中的Pandas DataFrame - 乐贴网