创建一个网络,其中节点使用 networkx 存储多个属性数据

Posted

技术标签:

【中文标题】创建一个网络,其中节点使用 networkx 存储多个属性数据【英文标题】:Creating a network where nodes store multiple attribute data with networkx 【发布时间】:2021-12-01 05:07:18 【问题描述】:

我有一个如下的数据框:

并且想创建一个网络,其中节点来自con.taxonomyres.taxonomy 列,边是通过geographic.location 创建的。我已经设法创建了网络,如下所示:

G = nx.from_pandas_edgelist(swiz_lakes, "con.taxonomy", "res.taxonomy", "geographic.location")

但是,我想知道是否可以向节点添加其他属性,因为可以通过边缘来完成。例如。我本来可以的

G = nx.from_pandas_edgelist(swiss_lakes, "con.taxonomy", "res.taxonomy", ["geographic.location", "con.metabolic.type", "con.movement.type", "res.metabolic.type", "res.movement.type"])

我想知道是否可以做类似的事情以便在节点中存储更多信息,但不能作为标签。

这可能吗,或者如果没有,请有人解释为什么不可以?

【问题讨论】:

【参考方案1】:

这当然是可能的。在我看来,实现这一目标的最简单方法是创建节点和相关信息的字典并使用nx.set_node_attributes

将您的数据框转换为 dicts 的字典,其中第一级键是您的节点名称,第二级键是您的属性名称,值是数据框中的相应值。 (可能最容易使用:your_dict = df.to_dict(orient="your_node_name_colum"))然后使用 nx.set_node_attributes(G, your_dict).

查看 networkx 文档: https://networkx.org/documentation/stable/reference/generated/networkx.classes.function.set_node_attributes.html

【讨论】:

以上是关于创建一个网络,其中节点使用 networkx 存储多个属性数据的主要内容,如果未能解决你的问题,请参考以下文章

NetworkX - 连接的列

NetworkX 中按边和节点属性查询图的最佳实践

NetworkX 中的节点与边

如何根据注释属性对networkx python图中的节点进行分组?

如何用python实现网络图节点权重的添加以及如何把一个非连通的大网络图分成多个小网络图

NetworkX是一个图论与复杂网络建模工具