在 networkx 中找到所有有向路径并将它们保存为数据框

问题描述 投票:0回答:0

我需要找到示例中所示网络中的所有有向路径,并将有向路径保存在新数据框中。

样品:

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

sample_dict = {
    'target': ['A', 'A', 'B', 'B', 'F'],
    'source': ['B', 'E', 'C', 'D', 'G'],
}

sample_data = pd.DataFrame(sample_dict)

G = nx.from_pandas_edgelist(sample_data,
                         source='source',
                         target='target',
                         create_using=nx.DiGraph())

pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()

我厌倦了 nx.weakly_connected_components,但我不知道如何解释方向。

d = {}
for c in nx.weakly_connected_components(G):
    path= ','.join(sorted(c))
    for n in c:
        d[n] = path
attempt_data = pd.DataFrame(d.items())


    0   1
0   A   A,B,C,D,E
1   C   A,B,C,D,E
2   D   A,B,C,D,E
3   E   A,B,C,D,E
4   B   A,B,C,D,E
5   G   F,G
6   F   F,G

期望的输出:

desired_dict = {
    'unit': ['A', 'A', 'A', 'B', 'B', 'C', 'D', 'E', 'F', 'G'],
    'group': ['A,B,C', 'A,B,D', 'A,E', 'A,B,C', 'A,B,D', 'A,B,C', 'A,B,D', 'A,E', 'F,G', 'F,G']
}

desired_data = pd.DataFrame(desired_dict)
print(desired_data)

  unit  group
0   A   A,B,C
1   A   A,B,D
2   A   A,E
3   B   A,B,C
4   B   A,B,D
5   C   A,B,C
6   D   A,B,D
7   E   A,E
8   F   F,G
9   G   F,G
python path networkx directed-graph group
© www.soinside.com 2019 - 2024. All rights reserved.