创建一个网络,其中节点使用 networkx 存储多个属性数据
Posted
技术标签:
【中文标题】创建一个网络,其中节点使用 networkx 存储多个属性数据【英文标题】:Creating a network where nodes store multiple attribute data with networkx 【发布时间】:2021-12-01 05:07:18 【问题描述】:我有一个如下的数据框:
并且想创建一个网络,其中节点来自con.taxonomy
和res.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 python图中的节点进行分组?