图形工具:如何访问add_edge_list返回的顶点值属性映射?



我正在尝试开始使用图形工具进行我公司的分析,作为networkx的更高性能替代品。 我已经设法弄清楚了很多事情(绘图,获得中心,学位等(,但有一件事我无法弄清楚。如何访问通过add_edge_list加载的原始顶点值?我需要这种能力来按值查找特定的顶点,例如找到其连接的组件或其他结构。

根据add_edge_list的文档:

或者,如果经过哈希处理 == True,则不假定边列表中的顶点值直接对应于顶点索引。在这种情况下,它们将根据遇到它们的顺序映射到顶点索引,并返回包含顶点值的顶点属性映射。

我的目标是将CSV加载到熊猫数据帧中,对数据帧执行一些操作以使其采用边缘列表格式,然后将其加载到图形中。 这是我到目前为止的代码:

import graph_tool as gt
import pandas as pd
df = pd.read_csv('data/2019-data.csv')
G = gt.Graph(directed=False)
props = G.add_edge_list(df[['vertex1', 'vertex2']].values, hashed=True)

这很好地填充了图形,但 props 返回为空。

len(G.get_vertices())
183298
len(props.a)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: object of type 'NoneType' has no len()

有谁知道这是如何工作的?

我在图形工具 3.7 上的 Python 2.29 虚拟环境中运行它。

注意:这里有一个类似的问题,但接受的答案对我不起作用。

谢谢!

解决了!根据这个问题,您可以像列表一样通过顶点 id 索引 prop 变量,甚至可以创建映射字典以进行快速查找。

例如

mapping_dict = {props[i]: i for i in range(G.num_vertices())}

虽然我不完全明白为什么props.a不返回任何内容,因为它是一个顶点属性图......

最新更新