Python 从平面表构建节点关系
我有一个平面桌子形式的交通网络。内容可描述如下:Python 从平面表构建节点关系,python,graph,tree,Python,Graph,Tree,我有一个平面桌子形式的交通网络。内容可描述如下: Start_Node,Next_Node,End_Node 10,100,1000 100,200,1000 200,1000,1000 20,1000,1000 我想找到开始节点对和结束节点对之间的所有节点。因此,对于上面的示例,它看起来像: {10_1000: [100,200,1000] 20_1000: [1000] 100_1000: [200,1000] 200_1000: [1000]} 下面是我的尝试(我正在尝试学习pytho
Start_Node,Next_Node,End_Node
10,100,1000
100,200,1000
200,1000,1000
20,1000,1000
我想找到开始节点对和结束节点对之间的所有节点。因此,对于上面的示例,它看起来像:
{10_1000: [100,200,1000]
20_1000: [1000]
100_1000: [200,1000]
200_1000: [1000]}
下面是我的尝试(我正在尝试学习python,因此将非常欣赏该语言的任何方向)
我需要在列表中添加一个虚拟0,以后可以删除,但必须有更好的方法。为什么结果中只有10μ1000和20μ1000,而不是100μ1000和200μ1000?是的,我的错,我也会编辑并添加它们。
import pandas as pd
reg = pd.read_csv('nw.csv')
start_node = reg.start.unique()
end_node = reg.end.unique()
hop_dic = {}
for i in start_node:
for j in end_node:
key = str(i) + " - " + str(j)
node = []
iter = 0
for row in reg.itertuples():
while(row[1]==i and row[3]==j and row[2]!=j and iter < 10):
hop_dic[key] = node.append(row[2])
i = row[2]
iter = iter + 1
print "i =",i,"j= ",j,"iter= ",iter
import pandas as pd
reg = pd.read_csv('regularbagfwd.csv')
start_node = reg.start.unique()
end_node = reg.end.unique()
hop_dic = {}
for i in start_node:
for j in end_node:
key = str(i) + " - " + str(j)
iter = 0
reg_sub = reg.loc[reg.end == j]
node = [0]
while(node[-1] != j): #Checking if the last element is the end node
for row in reg_sub.itertuples():
if row[1]==i and row[2]==j: #last element
node.append(row[2])
hop_dic[key] = node
print "i =",i,"j= ",j,"iter= ",iter,"next= ",row[2]
print hop_dic
break
elif row[1]==i and row[2]!=j: #Not last element
node.append(row[2])
hop_dic[key] = node
i = row[2]
print "i =",i,"j= ",j,"iter= ",iter,"next= ",row[2]
print hop_dic
iter = iter + 1
if iter > 500: #I will break the while loop, untidy I know
break