Панды сгруппировать по столбцу и создать словарь с результатом - PullRequest
0 голосов
/ 01 декабря 2019

Мой фрейм данных выглядит следующим образом

Ввод

    NAME         TYPE       GROUP
1   Apple       Source  project1
2   Orange      Target  project1
3   pear        Target  project1
4   pineapple   Target  project1
5   plum        Source  project2
6   pomegranate Target  project3
7   quince      Target  project4
8   raspberry   Source  project3
9   strawberry  Target  project4

Мне нужен вывод группировки последнего столбца и создание словаря с ключом в качестве источника и целив качестве списка значений.

Для ясности: «Яблоко» является источником, а его цели - «Апельсин», «Груша», «Ананас» в проекте-1

Ожидаетсявывод :

{ Apple:["Orange","pear","pineapple"], plum:["pomegranate","quince"],raspberry:["strawberry"] }

1 Ответ

0 голосов
/ 01 декабря 2019

Проверьте встроенные функции панд DataFrame.to_dict() , похоже, это то, что вы ищете.

РЕДАКТИРОВАТЬ

Я выбрал альтернативный подход с функцией ниже, которая должна достичь того же результата без использования функции группировки. Он просто принимает df в качестве аргумента и создает словарь, который вы ищете, используя стандартную фильтрацию DataFrame.

def dictFromDf(df):
    keys = df['Name'][df.Type == 'Source']
    key_group_tuples = []
    for key in keys:
       key_group_tuples.append((key,df.Group[df['Name']== key].values[0]))

    final_dict = {}
    for pair in key_group_tuples:
        final_dict[pair[0]] = list(df.Name[(df.Name != pair[0])
        & (df.Group == pair[1])].values) 

    return final_dict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...