Я работаю с сетевыми данными, пытаюсь использовать pandas dataframe для описания сети x DiGraph. Мне бы хотелось, чтобы для каждой пары в графе были строки и столбец, указывающий на наличие ребра (node1,node2)
и (node2,node1)
- что на графе существует взаимная связь.
Я могу реализовать следующее для небольшого графа, но это слишком медленно, чтобы быть полезным для большого графа.
edges = pd.DataFrame({'source': [0, 2, 2,5],
'target': [2, 0, 3,0])
UnD_Test = nx.from_pandas_edgelist(edges)
Test = nx.from_pandas_edgelist(edges, create_using=nx.DiGraph())
link_df = pd.DataFrame(list(UnD_Test.edges))
link_df['Mutual'] = False
for val in range(len(link_df['Mutual'])):
p1 = link_df.iloc[val][0]
p2 = link_df.iloc[val][1]
if ((p1,p2) in Test.edges()) & ((p2,p1) in Test.edges()):
link_df['Mutual'][val] = True
Что я могу использовать, чтобы сделать это быстрее?