看板 Python 關於我們 聯絡資訊
不好意思,最近需要跑相當大量的資料 因此需要把code的速度做最有效的提升 這是我的兩個data pfam.csv_IPR_NA.csv(csv不小心重複了,不過不是重點:p): http://ppt.cc/oB18 proteinIDandGOID_norepet.csv: http://ppt.cc/NSE3 我需要把第一個csv的第二欄跟第二個csv的第一個欄位做對應 有對應到的全部做輸出 類似下面這樣: http://ppt.cc/UA7t 以下是我的code: import csv proteinID = [] GOID = [] a = 0 o = open("final.csv","w") g = open("proteinIDandGOID_norepet.csv","r") f = open("pfam.csv_IPR_NA.csv","r") for row in csv.reader(g): proteinID.append(row[0]) GOID.append(row[1]) for row in csv.reader(f): for i in range(len(GOID)): if row[1] == proteinID[i]: o.write(row[0] + "," + row[1]+"," + row[2] + "," + GOID[i] + "\n") f.close() o.close() g.close() 想問一下大家有沒有更有效率的寫法 感恩orz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.235.15.230 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1405858575.A.61E.html
goldflower:用while寫在同一個迴圈 用同一個index去跑 如果超出 07/20 22:21
goldflower:其中一個的長度後再去做判斷跑第二個迴圈 這樣咧@@? 07/20 22:22
goldflower:這樣應該能減少一次重複的判斷 不知可行否 07/20 22:24
有點不懂,一樣是兩個迴圈嗎? ※ 編輯: sariel0322 (182.235.15.230), 07/20/2014 22:28:24
mantour:以proteinID為key建立搜尋樹 07/20 23:13
mantour:proteinID和GOID的對應是唯一的嗎 同樣proteinID是否會有 07/20 23:19
mantour:兩個以上的GOID? 07/20 23:19
sariel0322:個csv都兩個以上,只有一個我應該就用dict了…… 07/20 23:48
sariel0322:剛才沒打好,兩個csv都兩個以上 07/20 23:49
sariel0322:都是同一欄重複兩個以上的ID 07/20 23:51
goldflower:欸對耶 我那樣沒跑比較快 只是長比較短XD 07/20 23:58
lc85301:用dict然後存set or list如何 07/21 02:02 嗯...可行嗎?set過後應該會吧重複的都只取一個吧? 我的目的是要把兩個csv中重複match的資料都取出來作整理排列 ※ 編輯: sariel0322 (120.126.36.171), 07/21/2014 13:17:11