我在熊猫中有一个数据框,如下所示:
{ path: 'contact', loadChildren: 'contact.module#ContactModule' }
{ path: 'contact', loadChildren: '/contact.module#ContactModule' }
{ path: 'contact', loadChildren: './contact.module#ContactModule' }
{ path: 'contact', loadChildren: 'contact/contact.module#ContactModule' }
{ path: 'contact', loadChildren: '/contact/contact.module#ContactModule' }
{ path: 'contact', loadChildren: './contact/contact.module#ContactModule' }
{ path: 'contact', loadChildren: 'lib/contact/contact.module#ContactModule' }
{ path: 'contact', loadChildren: '/lib/contact/contact.module#ContactModule' }
{ path: 'contact', loadChildren: './lib/contact/contact.module#ContactModule' }
我正在尝试创建一个包含key1的键和一个key2和value的嵌套词典的字典。我尝试了以下方法:
df = pd.DataFrame({'key1': ['abcd', 'defg', 'hijk', 'abcd'],
'key2': ['zxy', 'uvq', 'pqr', 'lkj'],
'value': [1, 2, 4, 5]})
所需的输出:
dct = df.groupby('key1')[['key2', 'value']].apply(lambda x: x.set_index('key2').to_dict(orient='index')).to_dict()
dct
{'abcd': {'zxy': {'value': 1}, 'lkj': {'value': 5}},
'defg': {'uvq': {'value': 2}},
'hijk': {'pqr': {'value': 4}}}
答案 0 :(得分:2)
使用collections.defaultdict
,您可以构造defaultdict
个对象的dict
,并在迭代数据帧时添加元素:
from collections import defaultdict
d = defaultdict(dict)
for row in df.itertuples(index=False):
d[row.key1][row.key2] = row.value
print(d)
defaultdict(dict,
{'abcd': {'lkj': 5, 'zxy': 1},
'defg': {'uvq': 2},
'hijk': {'pqr': 4}})
由于defaultdict
是dict
的子类,因此不需要进一步的工作。