在networkx中用csvFi创建边缘

2024-06-16 13:31:26 发布

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

我是经济学专业的,编程新手,请原谅我在这里缺乏技术知识。在

我正在尝试用csv文件创建一个网络。csv文件包括两列。第一列表示工单,第二列表示工作站。工作站必须是网络的节点。在

ORDER_ID;MACHINE_ID;
0;0;
0;1;
1;1;
2;2;
2;3;
2;4;
2;5;
2;6;
2;1;
2;7;
2;2;
3;8;
3;1;
4;9;
5;10;
5;10;
5;5;
5;11;
5;0; 
5;12;

只要订单号在不同的行中是相同的编号,这些行的节点就必须作为边进行链接。一旦订单ID改变,下一行必须被选中并作为edge链接。为了更好的分析,将边定向。我写了一个算法,但是在选择行项目时遇到了问题。在

^{pr2}$

结果必须是这样的:

g.edges()

>>> (0,1),(2,3),(3,4),(4,5),(5,6),(6,1),(1,7),(7,2),(8,1),(10,10),(10,5),(5,11),(11,0),(0,12)

非常感谢所有花时间回应的人!在


Tags: 文件csv网络id节点专业链接编程
1条回答
网友
1楼 · 发布于 2024-06-16 13:31:26

我认为算法应该如下:

import csv
import networkx as nx
g = nx.DiGraph()
data_csv = open('Data.csv')
csv_f = csv.reader(data_csv,delimiter=';')
prev_orderID = -1
prev_machineID = -1
for row in csv_f:
    if row[0] == prev_orderID:
        g.add_edge(prev_machineID,row[1])
    prev_orderID = row[0]
    prev_machineID = row[1]
print g.edges()

我将您提供的样本放入.csv文件中,结果与您的预期相同:

^{pr2}$

Maybe you had problems reading the rows because you did not specify the delimiter.

相关问题 更多 >