Добавить атрибут ребра через groupby / itertools - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть некоторые данные об авторах, связанные с идентификаторами публикаций.Следующий сценарий использует эти совместные публикации для создания списка ребер на основе соавторства:

import networkx as nx
import itertools
D = nx.Graph()
D.add_nodes_from(author_affiliations_dataframe['auid'].values)
for i, group in author_affiliations_dataframe.groupby(['pmid'])['auid']:
   # generate all combinations without replacement 
   # from the group of similar column pairs
   for u, v in itertools.combinations(group, 2):           
       D.add_edge(u, v)

Однако теперь я хочу добавить год публикации к каждому ребру, поскольку меня интересует эволюцияиз этих сетей с течением времени.Год публикации связан с идентификаторами публикации и также доступен в author_affiliations_dataframe.

1 Ответ

0 голосов
/ 27 ноября 2018

Я нашел частичное решение моей проблемы:

for i, group in author_pmids.groupby(['pmid'])['auid']:
# generate all combinations without replacement 
# from the group of similar column pairs
    for u, v in itertools.combinations(group, 2): 
         edges.append(pd.DataFrame({'pmid': [i], 'left': [u],'right':[v]}))          
edges = pd.concat(edges)

Кадр данных ребер может впоследствии использоваться для создания ребер в графическом объекте.

Единственная проблема заключается в том, чтоприведенный выше код неэффективен, поэтому приветствуются дальнейшие ответы, предлагающие более быстрое решение.

...