python - 将 pandas 数据框转换为 networkx 图

标签 python pandas networkx

我有一个如下所示的数据框:

    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/

相关文章:

python - 使用 python meteor 查看数据的实时变化

pandas - 根据行频率对 Pandas 数据框进行排序

python - 访问循环中节点的属性

python - 作用于旋转数据框的 Pandas 数据透视表

python - 更改 networkx 中的箭头类型

python - 根据 networkx 中的边权重排序的相邻边(Python)

python - PySpark Dataframe.groupBy MapType 列

python - 清理 CSV——开始新行

python - 无限除以 2

Python用前缀分割字符串