从pandas数据帧键创建networkx/plotly网络错误:0

2024-09-28 18:54:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从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


Tags: 文件pyimportnetworkxidpandasdataglobal
1条回答
网友
1楼 · 发布于 2024-09-28 18:54:37

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

因此,循环for n in pos不起任何作用。所以ncenter在循环之后仍然是0。由于您的图没有节点0,所以当您要求它从ncenter查找路径时,您会得到一个键错误。在

相关问题 更多 >