2017-06-06 2 views
1

Je le dataframe de pandas géants suivant contient une edgelist comme suit:créer igraph Graphique de pandas géants dataframe

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

Je veux créer un objet igraph de la trame de données de pandas géants (pas de fichiers). Le graphique est trop grand, donc je ne peux pas le convertir en une matrice d'adjacence. Comment faire ça?

Répondre

1

Juste esquissant/pseudocode, mais qu'en est-:

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

La façon dont je fais toujours c'est le suivant, bien que je répète souvent les bords, ce qui est la raison pour laquelle mes poids sont sujettes à changer (je suis en supposant que votre cadre de données pandas est nommé 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