2016-12-06 69 views
2

我遇到了同樣的問題,因爲它是這裏所描述大廈多重圖從熊貓數據幀 - 「類型錯誤:unhashable類型:‘字典’」

Networkx Multigraph from_pandas_dataframe

雖然我在convert_matrix.py取代線211, 「類型錯誤:不可用類型:'字典'」仍然存在。我想用下面的數據框(鏈接)來構建多圖:

1_id f v  v_id_1 v_id_2 
0 3483 50 38000  739 2232 
1 3482 50 38000  717 2196 
2 3482 50 22000  717 2196 
3 3480 50 22000 1058 2250 

data = {'1_id':[3483, 3482, 3482, 3480], 'v_id_1':[739, 717, 717, 1058], 'v_id_2':[2232,2196, 2196, 2250], 'v':[38000, 38000, 22000, 22000], 'f':[50, 50, 50, 50]} 
links = pd.DataFrame(data) 

G=nx.from_pandas_dataframe(links, 'v_id_1', 'v_id_2', edge_attr=['v','f'], create_using=nx.MultiGraph()) 

嘗試創建多重圖,我發現了錯誤:

TypeError         Traceback (most recent call last) 
<ipython-input-49-d2c7b8312ea7> in <module>() 
----> 1 MG= nx.from_pandas_dataframe(df, 'gene1', 'gene2', ['conf','type'], create_using=nx.MultiGraph()) 

/usr/lib/python2.7/site-packages/networkx-1.10-py2.7.egg/networkx/convert_matrix.pyc in from_pandas_dataframe(df, source, target, edge_attr, create_using) 
209   # Iteration on values returns the rows as Numpy arrays 
210   for row in df.values: 
--> 211    g.add_edge(row[src_i], row[tar_i], {i:row[j] for i, j in edge_i}) 
212 
213  # If no column names are given, then just return the edges. 

/usr/lib/python2.7/site-packages/networkx-1.10-py2.7.egg/networkx/classes/multigraph.pyc in add_edge(self, u, v, key, attr_dict, **attr) 
340    datadict.update(attr_dict) 
341    keydict = self.edge_key_dict_factory() 
--> 342    keydict[key] = datadict 
343    self.adj[u][v] = keydict 
344    self.adj[v][u] = keydict 

TypeError: unhashable type: 'dict' 
+0

嗨,你能提供完整的錯誤信息和[mcve]嗎?謝謝。 – Joel

回答

2

發佈在GitHub上這個問題後(見這裏link ),我得到了一個很好的答案,至少在我的情況下似乎工作。我已經安裝了2.0版的networkx 1.11.dev_20161206165920嘗試從github安裝NetworkX的開發版link