我有一个看起来像这样的数据框:
imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 21/9).isActive = true
我希望它成为这样的字典:
d = {'country': ['America','America','America','America','Canada','Canada','Canada','Canada'],\
'city': ['New York','New York','San Francisco','San Francisco',u'Montréal',u'Montréal','Toronto','Toronto'],\
'landmark': ['Statue of Liberty', 'Empire State Building','Golden Gate Bridge',\
'Mission District','Biodome', 'Parc Laurier', 'CN Tower', 'Royal Ontario Museum']}
pd.DataFrame(data = d)
答案 0 :(得分:4)
您可以使用dict comprehension
,例如:
all_options = {country: grp.groupby('city')['landmark'].apply(list).to_dict()
for country, grp in df.groupby('country')}
[出]
{'America': {'New York': ['Statue of Liberty', 'Empire State Building'],
'San Francisco': ['Golden Gate Bridge', 'Mission District']},
'Canada': {'Montréal': ['Biodome', 'Parc Laurier'],
'Toronto': ['CN Tower', 'Royal Ontario Museum']}}
或者,如果您希望使用更明确的方法,则等效于for
循环:
all_options = {}
for country, grp in df.groupby('country'):
all_options[country] = grp.groupby('city')['landmark'].apply(list).to_dict()
上面有用的链接包括DataFrame.groupby
,Series.apply
和Series.to_dict