Hi,

Graph.DictList() and Graph.TupleList() are meant to be used in cases when
the graph is already in memory in some format and you can cast the input
data into either a list-of-dictionaries representation or a list-of-tuples
representation. I believe in your case the list-of-tuples representation is
more natural. So, basically, you need to figure out a way to cast a pandas
DataFrame into a list (or iterable) where each element is a triplet
containing the source ID, the target ID and the weight, and then call
Graph.TupleList(your_list, weights=True).

All the best,

T.

On Sat, Apr 15, 2017 at 11:30 PM, Nick Eubank <[email protected]> wrote:

> Hell All,
>
> I'm trying to figure out the most efficient way of creating an igraph
> object form an edgelist stored in a numpy array (or rather, technically, a
> pandas DataFrame).
>
> The DataFrame looks something like:
>
>     a        b           weight
>     100    101       1
>     100    102       5
>     101    103       1
>     101    104       4
>
> The numbers in a and b are NOT sequential integers, though I can write
> code to make those conversion if necessary.
>
> One option is obviously to write out the data frame as a text file, then
> re-import as an ncol or such. But my dataset is very large (the edgelist
> has about 400,000,000 entries), which means that's a massively slow
> process, and I think loading the text file when importing into igraph may
> be requiring more ram than I have.
>
> I've found resources on importing adjacency matrices
> <http://stackoverflow.com/questions/29655111/igraph-graph-from-numpy-or-pandas-adjacency-matrix>,
> but nothing on edgelists.
>
> Anyone run into this before / have any suggestions?
>
> Thanks!
>
> Nick
>
>
> _______________________________________________
> igraph-help mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/igraph-help
>
>
_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to