Pandas 要绘制的数据帧

Pandas DataFrames to Graph

给定两个数据帧,一个用于节点,另一个用于边。我怎样才能将它们放入包含我拥有的属性列的 networkx 图中?

示例:

df_nodes

ID Label Attribute_W Attribute_X
0 0 Japan Asia 81
1 1 Mexico America 52
2 2 Ireland Europe 353

df_Edges

Target Source Attribute_Y Attribute_Z
0 0 1 10 1
1 0 2 15 2
2 1 2 20 3

我尝试使用 G = nx.from_pandas_edgelist 但它 returns 是一个属性错误。而且我不确定如何在图形的构造中添加属性。

我正在寻找输出一个 graphml 文件 nx.write_graphml(G, "My_File.graphml")

谢谢。

我也不知道如何通过 from_pandas_edgelist 包含节点属性。但是,您可以在几行代码中使用 nx.add_edges_from 和 nx.add_nodes_from 来实现您想要的效果。

G = nx.Graph()

node_label_attr = "Label"
for index,row in df_nodes.iterrows():
    as_dict = row.to_dict()
    label = as_dict[node_label_attr]
    del as_dict[node_label_attr]
    G.add_nodes_from([(label, as_dict)])

for index,row in df_Edges.iterrows():
    as_dict = row.to_dict()
    source = as_dict["Source"]
    target = as_dict["Target"]
    del as_dict["Source"]
    del as_dict["Target"]
    G.add_edges_from([(source,target,as_dict)])

您遍历数据框的行并将它们转换为 nx.add_nodes_from 和 nx.add_edges_from 可以理解的字典。