使用networkx / plotly从熊猫数据框创建网络

我试图用一个熊猫数据框来构建一个网络,它有四列,如下所示:

PTDID | PBDID | BTDID | BDDID

PTD000000 | PBD000024 | BTD000264 | BDD000288

PTD000001 | PBD000025 | BTD000264 | BDD000289

PTD000001 | PBD000025 | BTD000264 | BDD000290

PTD000001 | PBD000025 | BTD000264 | BDD000291

PTD000001 | PBD000025 | BTD000264 | BDD000292

PTD000000 | PBD000024 | BTD000264 | BDD000293

...等36k行

我试图用我的数据框重新创建这个例子:https://plot.ly/python/network-graphs/

但是,我收到'KeyError:0'消息。

我现在的代码:

import pandas as pd
import plotly.plotly as py
from plotly.graph_objs import *
import networkx as nx
import numpy as np


df=pd.read_csv('C:UsersnkurdobDocumentsbdh5.csv')

#get node positions

G=nx.from_pandas_dataframe(df, 'BTDID', 'BDDID', ['PTDID', 'PBDID'])
pos=nx.get_node_attributes(G,'pos')


dmin=1
ncenter=0
for n in pos:
    x,y=pos[n]
    d=(x-0.5)**2+(y-0.5)**2
    if d<dmin:
        ncenter=n
        dmin=d

p=nx.single_source_shortest_path_length(G,ncenter)

有谁知道如何克服这个错误? 我认为这条线可能会搞乱它:

G=nx.from_pandas_dataframe(df, 'BTDID', 'BDDID', ['PTDID', 'PBDID'])

但我不知道如何解决它。 我通过下面的示例得到了这个^:http://networkx.readthedocs.io/en/latest/reference/generated/networkx.convert_matrix.from_pandas_dataframe.html

先谢谢你!

纳扎尔

编辑:追溯错误:

runfile('L:/ Data / Global ID / Nazar / bdh.py',wdir ='L:/ Data / Global ID / Nazar')Traceback(最近一次调用最后一次):

文件“”,第1行,在runfile中('L:/ Data / Global ID / Nazar / bdh.py',wdir ='L:/ Data / Global ID / Nazar')

(filename,namespace)中的文件“C: Users nkurdob AppData Local Continuum Anaconda2 lib site-packages spyderlib widgets externalshell sitecustomize.py”第714行。

在execfile exec(compile(scripttext,filename,'e​​xec')中的第74行的文件“C: Users nkurdob AppData Local Continuum Anaconda2 lib site-packages spyderlib widgets externalshell sitecustomize.py” ),glob,loc)

文件“L:/ Data / Global ID / Nazar / bdh.py”,第32行,在p = nx.single_source_shortest_path_length(G,ncenter)

文件“C: Users nkurdob AppData Local Continuum Anaconda2 lib site-packages networkx algorithms shortest_paths unweighted.py”,第63行,在single_source_shortest_path_length nextlevel.update(G [v])#add诉的邻居

文件“C: Users nkurdob AppData Local Continuum Anaconda2 lib site-packages networkx classes graph.py”,第407行,在getitem中返回self.adj [n]

KeyError:0


看起来你并没有将pos定义为节点属性。 所以当你做pos = nx.get_node_attributes(G,'pos') ,它会变成一个空dict

因此for n in pos中的for n in pos循环什么都不做。 所以在循环之后, ncenter仍然是0。 由于你的图没有节点0 ,当你要求它从ncenter找到路径时,你会遇到一个ncenter

链接地址: http://www.djcxy.com/p/55289.html

上一篇: Creating network with networkx / plotly from a pandas dataframe

下一篇: Importerror: cannot import name Split