簡體   English   中英

從csv-File中創建networkx中的邊

[英]Create edges in networkx out of csv-File

我從事經濟學工作,而且我是編程新手,所以請原諒我缺乏技術知識。

我正在m using iPython 2.7 and I want to analyze a production system as network. Therefore I m using iPython 2.7 and I want to analyze a production system as network. Therefore I試圖用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)

非常感謝每個需要時間回應的人!

我認為算法應該如下:

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')]

也許您在閱讀行時遇到問題,因為您沒有指定分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM