我在python中有一个dataframe,如下所示:
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
{'php': {'check': 0,
'imag': 1,
....},
'image-processing': {....},
'file-upload': {....},
} 我不需要内部数据按概率值的任何顺序排列。我可以很容易地编码,但我需要知道是否有任何熊猫技巧,可以在这里应用。
发布于 2018-11-20 11:14:22
使用dictionary comprehension
d = {k:v.reset_index(level=0, drop=True).to_dict()
for k, v in df.groupby(level=0)['probability']}另一种解决办法是:
d = {k: dict(v.values) for k, v in df.reset_index(level=1).groupby(level=0)}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}}发布于 2018-11-20 11:12:15
我认为这是最快的方法:
你的例子:
df.reset_index(level=1, inplace=True)
df_dict = df.to_dict('your_index')简单的例子:
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')https://stackoverflow.com/questions/53391438
复制相似问题