Hi,
I'm trying to convert two columns of my pandas dataframe into network using them as edge list. A similar query https://stackoverflow.com/questions/35459597/graph-tool-reading-edge-lists-from-pandas-dataframe was posted in StackOverflow but with different problem and it didn't help me.
When I am trying the following code it gives me error: * myGraph.add_edge_list(i for i in df[['node1','node2']].values.tolist())*
Where, my Graph is the graph; df is the dataframe with 4 columns out of which I am using two 'node1' and 'node2'.
*File "/usr/lib/python3/dist-packages/graph_tool/__init__.py", line 2109, in add_edge_list libcore.add_edge_list_iter(self.__graph, edge_list, eprops)*
*TypeError: No registered converter was able to produce a C++ rvalue of type unsigned long from this Python object of type str *
I tried upgrading my boost library but it doesn't solve the problem. Any suggestions ?
-- Sent from: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/
Am 18.07.2018 um 08:37 schrieb ashutosh:
I tried upgrading my boost library but it doesn't solve the problem. Any suggestions ?
Without a minimal and self-contained example that shows the problem, it's difficult to say anything.
Please provide a small example that we can run, so we can understand what the problem may be.
sampleFile.tab http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/file/t496073/sampleFile.tab
above is the sample file.
and below is the code that produces the error as i mentioned before
import pandas as pd import graph_tool.all as gtx df = pd.read_csv("file_path",sep='\t',headers=True)
myGraph = gtx.Graph()
myGraph.add_edge_list(df.values.tolist())
-- Sent from: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/
Ni! Hi ashu,
Please, always try to *read errors carefully* and consult the documentation. Not to mention, provide self-contained examples.
Python is throwing a "TypeError" and telling you it expects an integer ('unsigned long', the C++ type for vertex indices) while you are passing it a string ('str').
As you can see in the documentation https://graph-tool.skewed.de/static/doc/graph_tool.html, if you want to pass strings to add_edge_list you should set two additional arguments: `hash=True` and `string_vals=True`.
If that doesn't fix it, you'll have to provide a self-contained example where the error occurs, otherwise we can't really help.
.~´
On Wed, Jul 18, 2018 at 9:37 AM, ashutosh ashuein@gmail.com wrote:
Hi,
I'm trying to convert two columns of my pandas dataframe into network using them as edge list. A similar query https://stackoverflow.com/questions/35459597/graph-tool- reading-edge-lists-from-pandas-dataframe was posted in StackOverflow but with different problem and it didn't help me.
When I am trying the following code it gives me error:
myGraph.add_edge_list(i for i in df[['node1','node2']].values.tolist())*
Where, my Graph is the graph; df is the dataframe with 4 columns out of which I am using two 'node1' and 'node2'.
*File "/usr/lib/python3/dist-packages/graph_tool/__init__.py", line 2109, in add_edge_list libcore.add_edge_list_iter(self.__graph, edge_list, eprops)*
*TypeError: No registered converter was able to produce a C++ rvalue of type unsigned long from this Python object of type str
I tried upgrading my boost library but it doesn't solve the problem. Any suggestions ?
-- Sent from: http://main-discussion-list-for-the-graph-tool-project. 982480.n3.nabble.com/ _______________________________________________ graph-tool mailing list graph-tool@skewed.de https://lists.skewed.de/mailman/listinfo/graph-tool
Tiny typo, the first argument is `hashed=True`.
On Wed, Jul 18, 2018 at 1:18 PM, Alexandre Hannud Abdo abdo@member.fsf.org wrote:
Ni! Hi ashu,
Please, always try to *read errors carefully* and consult the documentation. Not to mention, provide self-contained examples.
Python is throwing a "TypeError" and telling you it expects an integer ('unsigned long', the C++ type for vertex indices) while you are passing it a string ('str').
As you can see in the documentation https://graph-tool.skewed.de/static/doc/graph_tool.html, if you want to pass strings to add_edge_list you should set two additional arguments: `hash=True` and `string_vals=True`.
If that doesn't fix it, you'll have to provide a self-contained example where the error occurs, otherwise we can't really help.
.~´
On Wed, Jul 18, 2018 at 9:37 AM, ashutosh ashuein@gmail.com wrote:
Hi,
I'm trying to convert two columns of my pandas dataframe into network using them as edge list. A similar query https://stackoverflow.com/questions/35459597/graph-tool-rea ding-edge-lists-from-pandas-dataframe was posted in StackOverflow but with different problem and it didn't help me.
When I am trying the following code it gives me error:
myGraph.add_edge_list(i for i in df[['node1','node2']].values.tolist())*
Where, my Graph is the graph; df is the dataframe with 4 columns out of which I am using two 'node1' and 'node2'.
*File "/usr/lib/python3/dist-packages/graph_tool/__init__.py", line 2109, in add_edge_list libcore.add_edge_list_iter(self.__graph, edge_list, eprops)*
*TypeError: No registered converter was able to produce a C++ rvalue of type unsigned long from this Python object of type str
I tried upgrading my boost library but it doesn't solve the problem. Any suggestions ?
-- Sent from: http://main-discussion-list-for-the-graph-tool-project.98248 0.n3.nabble.com/ _______________________________________________ graph-tool mailing list graph-tool@skewed.de https://lists.skewed.de/mailman/listinfo/graph-tool
I got the problem.
Graph Tool by default accepts only vertex objects or int(index) values on edge list and hence either I pass on vertex object list or keep the options* hashed=True and string_vals=True* in the add_edge_list option.
The problem is resolved now. Thank you
-- Sent from: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/