我尝试从pandas数据帧构建一个网络,该数据框有四列,如下所示:
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:\\Users\\nkurdob\\Documents\\bdh5.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)
有人知道如何克服这个错误吗?我想这句话可能把事情搞砸了:
^{pr2}$但我不知道怎么修。我通过下面的例子得到了这个^: http://networkx.readthedocs.io/en/latest/reference/generated/networkx.convert_matrix.from_pandas_dataframe.html
提前谢谢你!在
纳扎尔
编辑:回溯错误:
runfile('L:/Data/Global ID/Nazar/巴西第纳尔',wdir='L:/Data/Global ID/Nazar') 回溯(最近一次呼叫):
文件“”,第1行,输入 runfile('L:/Data/Global ID/Nazar/巴西第纳尔',wdir='L:/Data/Global ID/Nazar')
文件“C:\Users\nkurdob\AppData\Local\Continuum\Anaconda2\lib\site packages\spyderlib\widgets\externalshell\网站自定义.py,第714行,在runfile中 execfile(文件名,命名空间)
文件“C:\Users\nkurdob\AppData\Local\Continuum\Anaconda2\lib\site packages\spyderlib\widgets\externalshell\网站自定义.py“,第74行,在execfile中 exec(编译(scripttext,文件名,'exec'),glob,loc)
文件“L:/Data/Global ID/Nazar/巴西第纳尔“,第32行,英寸 p=nx.单源_最短路径长度(G,中心)
文件“C:\Users\nkurdob\AppData\Local\Continuum\Anaconda2\lib\site packages\networkx\algorithms\shortest_paths\未加权.py“,第63行,单源最短路径长度 下一级更新(G[v])#添加v的邻域
文件“C:\Users\nkurdob\AppData\Local\Continuum\Anaconda2\lib\site packages\networkx\classes\图形.py“,第407行,ingetitem 返回自我调节[牛顿]
键错误:0
看起来您没有将
pos
定义为节点属性。所以当你做pos = nx.get_node_attributes(G,'pos')
时,它会变成一个空的dict
。在因此,循环
for n in pos
不起任何作用。所以ncenter
在循环之后仍然是0。由于您的图没有节点0
,所以当您要求它从ncenter
查找路径时,您会得到一个键错误。在相关问题 更多 >
编程相关推荐