我正在尝试开始使用图形工具进行我公司的分析,作为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
不返回任何内容,因为它是一个顶点属性图......