2017-06-06 48 views
1

我有以下的熊猫数据帧包含EdgeList都如下:创建的igraph从图表数据帧大熊猫

 name1    name2 weight 
0 $hort, Too Alexander, Khandi 0.083333 
1 $hort, Too    B-Real 0.083333 

我想创建从大熊猫数据框(而不是从文件)的igraph对象。 图形太大,所以无法将其转换为邻接矩阵。怎么做?

回答

1

只是素描/伪代码,但怎么样:

for row in df.iterrows(): 
    graph.add_edge(row.name1, row.name2, weight=row.weight) 
1

的方式,我总是这样做是下面的,虽然我经常重复的边缘,这就是为什么我的权重是容易改变(我假设您的熊猫数据框被命名为df):

import igraph 

edgelist = [] 
weights = [] 
for i in df.index(): 
    edge = (df.ix[i, 'name1'], df.ix[i, 'name2']) 
    if edge not in edgelist: 
     edgelist.append(edge) 
     weights.append(1) 
    else: 
     weights[edgelist.index(edge)] += 1 

G = Graph() 
G.add_edges(edgelist) 
G.es['weight'] = weights