+-
带有嵌套字典列表的字典中的Pandas DataFrame
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 - 乐贴网