首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从groupby对象Python创建字典

从groupby对象Python创建字典
EN

Stack Overflow用户
提问于 2014-05-05 10:39:08
回答 2查看 19.6K关注 0票数 16

假设我有一个数据文件:

代码语言:javascript
复制
df = pd.DataFrame({'Type' : ['Pokemon', 'Pokemon', 'Bird', 'Pokemon', 'Bird', 'Pokemon', 'Pokemon', 'Bird'],'Name' : ['Jerry', 'Jerry', 'Flappy Bird', 'Mudkip','Pigeon', 'Mudkip', 'Jerry', 'Pigeon']})  

我把它按类型分组:

代码语言:javascript
复制
print df.groupby(['Type','Name'])['Type'].agg({'Frequency':'count'})

                           Frequency
Type    Name                  
Bird    Flappy Bird          1
        Pigeon               2
Pokemon Jerry                3
        Mudkip               2

我能从上面的组中创建一本字典吗? "Bird"将有一个包含['Pigeon',Flappy Bird']的列表值,注意高频名称应该在值列表E 211中出现first。

预期输出:

代码语言:javascript
复制
dict1 = { 'Bird':['Pigeon','Flappy Bird'] , 'Pokemon':['Jerry','Mudkip'] }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-05 11:00:13

您可以使用字典理解创建字典,如下所示

代码语言:javascript
复制
df = pd.DataFrame({'Type' : ['Pokemon', 'Pokemon', 'Bird', 'Pokemon', 'Bird', 'Pokemon', 'Pokemon', 'Bird'],'Name' : ['Jerry', 'Jerry', 'Flappy Bird', 'Mudkip','Pigeon', 'Mudkip', 'Jerry', 'Pigeon']})  
f = df.groupby(['Type','Name'])['Type'].agg({'Frequency':'count'})
f.sort('Frequency',ascending=False, inplace=True)

d = {k:list(f.ix[k].index) for k in f.index.levels[0]}
print(d)
# {'Bird': ['Pigeon', 'Flappy Bird'], 'Pokemon': ['Jerry', 'Mudkip']}

字典理解将遍历外部索引(“鸟”、“口袋妖怪”),然后将值设置为字典的内部索引。

有必要首先根据MultiIndex列对Frequency进行排序,以获得所需的排序。

票数 14
EN

Stack Overflow用户

发布于 2019-03-29 17:18:29

这是一条单线。

代码语言:javascript
复制
df.groupby(['Type'])['Name'].apply(lambda grp: list(grp.value_counts().index)).to_dict()

# output
#{'Bird': ['Pigeon', 'Flappy Bird'], 'Pokemon': ['Jerry', 'Mudkip']}

value_counts函数隐式地按计数对Name字段分组,默认情况下返回降序。

奖励:如果您想包括计数,您可以执行以下操作。

代码语言:javascript
复制
df.groupby(['Type']).apply(lambda grp: grp.groupby('Name')['Type'].count().to_dict()).to_dict()

# {'Bird': {'Flappy Bird': 1, 'Pigeon': 2}, 'Pokemon': {'Jerry': 3, 'Mudkip': 2}}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23470450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档