Создание словаря из объекта 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
на