2017-11-16 2 views
0
import itertools 
import copy 
import networkx as nx 
import pandas as pd 
import matplotlib.pyplot as plt 
#-- 
edgelist = pd.read_csv('https://gist.githubusercontent.com/brooksandrew /e570c38bcc72a8d102422f2af836513b/raw/89c76b2563dbc0e88384719a35cba0dfc04cd522/edgelist_sleeping_giant.csv') 
edgelist.head(10) 
#-- 
nodelist = pd.read_csv('https://gist.githubusercontent.com/brooksandrew/f989e10af17fb4c85b11409fea47895b/raw/a3a8da0fa5b094f1ca9d82e1642b384889ae16e8/nodelist_sleeping_giant.csv') 
nodelist.head(5) 
#-- 
g = nx.Graph() 
#-- 
for i, elrow in edgelist.iterrows(): 
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict()) 
#-- 
#print(elrow[0]) 
#print(elrow[1]) 
#print(elrow[2:].to_dict()) 
#-- 
g.edges(data=True)[0:5] 
g.nodes(data=True)[0:10] 
#-- 
print(format(g.number_of_edges())) 
print(format(g.number_of_nodes())) 

は私に次のエラーを取得しますsubscripable networkxではありません。 私の単純な理解から、このエラーは[0:5]によって引き起こされましたが、間違っている可能性があります。オブジェクトが

私はかなり基本的なコーダーであり、this tutorialをフォローしようとしていますが、上記のエラーが発生します。

+0

「g.edges」の種類は何ですか? 'print(type(g.edges(data = True)))'からの出力を投稿すると、エラーは実際にはそれが何であれ 'EdgeDataView'オブジェクトであると言います – EdChum

+0

可能性のある[Pythonでは、オブジェクトが添字付きかどうかはどういう意味ですか?](https://stackoverflow.com/questions/216972/in-python-what-does-it-mean-if-an-object) -is-subscriptable-or-not) – Nabin

+0

重複しない - これは、networkx v2.0のデータ型がv1.1と異なるため、このエラーが発生した理由が変更されています。 v2.0へのアップデータv1.xコードの方法については、[マイグレーションガイド](https://networkx.github.io/documentation/latest/release/migration_guide_from_1.x_to_2.0.html)を参照してください。 – Joel

答えて

0

チュートリアルはnetworkxの前のバージョンに基づいています。またはg.edges(Data=True)はタプルのリストを表示します。リストは添字付きです。

g.edgesは、EdgeViewプロパティを提供し、g.edges(data=True)EdgeDataViewオブジェクトはサブスクリプトできません。あなたの質問に答えるために、あなたが行うことができます:

list(g.edges(data=True))[0:5] 

注:同じことがg.nodes()のための真である:それはlistだった前に、今では添字化NodeViewプロパティではありません。したがって、添字を追加する前にlistオブジェクトに変換することを忘れないでください([x:x])。

+1

1.xから2.0への変更によって問題が発生した場合の回答については、[移行ガイド](https://networkx.github.io/documentation/latest/release/migration_guide_from_1.x_to_2.0.html)を参照してください。 – Joel