我有一个如下所示的数据框:
X Y
0 1 1
1 1 2
2 2 1
3 2 3
4 3 3
我想在networkx中创建一个无向图,其中数据帧的每一行对应于图中的一个节点(每个节点的名称应该是数据帧的索引值),并且如果满足以下条件,则在节点之间绘制一条边:两个节点共享相同的 X 或 Y 值。如何做到这一点?
最佳答案
您可以通过使用 itertools 定义具有相同
.'X'
值和相同 'Y'
值的所有节点对来定义边.组合
import itertools.combinations as comb
edges = set()
for col in df:
for _, data in df.groupby(col):
edges.update(comb(data.index, 2))
G = nx.Graph()
G.add_nodes_from(df.index)
G.add_edges_from(edges)
关于python - 将 pandas 数据框转换为 networkx 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53937259/