Создание словаря из объекта groupby, Python

Предположим, у меня есть таблицы данных:

df = pd.DataFrame({'Type' : ['Pokemon', 'Pokemon', 'Bird', 'Pokemon', 'Bird', 'Pokemon', 'Pokemon', 'Bird'],'Name' : ['Jerry', 'Jerry', 'Flappy Bird', 'Mudkip','Pigeon', 'Mudkip', 'Jerry', 'Pigeon']})  

и я группирую его по типу:

print df.groupby(['Type','Name'])['Type'].agg({'Frequency':'count'})

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

могу ли я создать словарь из вышеуказанной группы ?? The ключ "Bird" будет иметь значение списка, содержащего ['Pigeon',Flappy Bird'] отметим, что имя более высокой частоты должен появиться первый на список значений.

Ожидаемый Результат:

dict1 = { 'Bird':['Pigeon','Flappy Bird'] , 'Pokemon':['Jerry','Mudkip'] }

1 ответов


вы можете создать словарь, используя понимание словаря, как показано ниже

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 на