首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫中用2列和第三列的值创建一个dict的dict

在熊猫中用2列和第三列的值创建一个dict的dict
EN

Stack Overflow用户
提问于 2018-11-20 10:54:31
回答 2查看 113关注 0票数 1

我在python中有一个dataframe,如下所示:

代码语言:javascript
复制
df = pd.DataFrame({
        'tag':['php','image-processing','file-upload','upload','mime-types'] * 2,
         'probability':np.arange(10),
         'token':['check'] * 5 + ['imag'] * 5
}).set_index(['tag','token'])
print (df)
                        probability
tag              token             
php              check            0
image-processing check            1
file-upload      check            2
upload           check            3
mime-types       check            4
php              imag             5
image-processing imag             6
file-upload      imag             7
upload           imag             8
mime-types       imag             9

我需要把一堆小弟弟和概率值放在一起。例如,对于php

代码语言:javascript
复制
{'php': {'check': 0,
         'imag': 1,
         ....},
 'image-processing': {....},
 'file-upload': {....},

} 

我不需要内部数据按概率值的任何顺序排列。我可以很容易地编码,但我需要知道是否有任何熊猫技巧,可以在这里应用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-20 11:14:22

使用dictionary comprehension

代码语言:javascript
复制
d = {k:v.reset_index(level=0, drop=True).to_dict() 
           for k, v in df.groupby(level=0)['probability']}

另一种解决办法是:

代码语言:javascript
复制
d = {k: dict(v.values) for k, v in df.reset_index(level=1).groupby(level=0)}
代码语言:javascript
复制
print (d)

{'file-upload': {'check': 2, 'imag': 7}, 
 'image-processing': {'check': 1, 'imag': 6}, 
 'mime-types': {'check': 4, 'imag': 9}, 
 'php': {'check': 0, 'imag': 5},
 'upload': {'check': 3, 'imag': 8}}
票数 2
EN

Stack Overflow用户

发布于 2018-11-20 11:12:15

我认为这是最快的方法:

你的例子:

代码语言:javascript
复制
df.reset_index(level=1, inplace=True)
df_dict = df.to_dict('your_index')

简单的例子:

代码语言:javascript
复制
import pandas as pd
df2 = pd.DataFrame({'id':['php','php','php','c'],'col1':['a','b','c','a'],'col2':[1,2,3,4]}).set_index('id')
df2.to_dict('id')

字典

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53391438

复制
相关文章

相似问题

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