从CSV文件中创建networkx的边

3

我从事经济学工作,对编程还是新手,所以请原谅我在这里缺乏技术知识。

我正在使用iPython 2.7,并想将生产系统作为网络进行分析。因此,我试图从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相同,这些行的节点必须连接为边缘。一旦订单ID发生更改,下一行就必须被检查并作为边缘链接。为了更好地进行分析,边缘是有向的。我编写了一个算法,但在选择行项目时遇到了问题。
import networkx as nx
import csv 

g = nx.DiGraph()

with open("Data.csv") as dataSet:
    data = csv.reader()
    for OrderID1 in dataSet:
        OrderID = OrderID[0]
        for MachineID1 in dataSet:
            MachineID = MachineID1[1]
                if OrderID[0][i] == OrderID[0][i+1]:  
                    g.add_edge(MachineID[0][i],MachineID[0][i+1])
                elif OrderID[0][i] != row[0][i+1]: 
                    g.add_edge(row[0][i+1],row[0][i+2])
                else:
                    dataSet.close()

结果应该是这样的:

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)

感谢所有抽出时间回复的人!

我认为在第一个for循环后面的那一行应该是OrderID = OrderID1[1]。此外,我认为你在第二个for循环后的if条件语句缩进上存在问题,所以我无法确定它的范围(我想它会因为错误的缩进而出错)。我将把我看到的算法发布出来,然后你可以将其与你打算做的进行比较。 - Abdallah Sobehy
1个回答

2
我认为算法应该如下:

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文件,结果与您的期望相同:
[('11', '0'), ('10', '10'), ('10', '5'), ('1', '7'), ('0', '1'), ('0', '12'), ('3', '4'), ('2', '3'), ('5', '11'), ('5', '6'), ('4', '5'), ('7', '2'), ('6', '1'), ('8', '1')]

也许您读取行的时候遇到了问题,因为您没有指定分隔符。

非常感谢。它起作用了!!!你是对的,使用分隔符打开文件。谢谢你的解决方案!! - David Kos
很高兴它能够工作,你可以勾选答案,这样如果其他有类似问题的人就会知道这个答案对你有用。@DavidKos - Abdallah Sobehy
我想问一下,如果我有一个包含多个列(例如ORDER_ID,CUSTOMER_ID)和一个目标标签(在这种情况下我们可以称之为MACHINE_ID)的CSV文件,我该怎么做才能进行这种表示呢? - JAHANZAIB MALIK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接