使用python和spark,我正在尝试从数据框创建图形。我的数据框变量df
包含一个边缘列表。
这是我尝试过的:
import numpy as np
from igraph import *
dataFrame = "/FileStore/tables/source.csv"
df = spark.read.format("csv").option("header","false").option("inferSchema", "true").load(dataFrame)
dd = df.collect()
npmatr=np.asmatrix(dd,dtype=np.int)
print(npmatr)
g=Graph(len(npmatr))
for i in range(len(npmatr)):
for j in range(2):
g.add_edges(npmatr[i][j])
但是它说,
“ TypeError:可迭代的对象必须返回成对的整数或字符串”。
关于如何修复代码或以其他方式从数据框中读取图形数据的任何建议?
为了更清楚一点,假设print(npmatr)
的输出如下:
[[0 1] [0 2] [0 3] [0 4] [1 2] [1 3] [1 4] [1 6] [2 3] [2 6] [2 7] [3 4] [4 2] [5 6] [5 7] [6 7] [6 5] [7 4]]
我想创建一个包含上面列表边缘的图形;例如,它具有从节点0到节点1,2,3,4的边缘,从节点1到节点2,3,4的边缘,6,...