我已兩個數據集格式如下:有效地發現在多千兆字節的數據集的行
infile1:
1 742429 SNP_A-1909444 T C . . PR GT 0/0 0/0 0/0
1 767376 SNP_A-2237149 G A . . PR GT 0/0 0/0 0/0
1 769185 SNP_A-4303947 A G . . PR GT 0/0 ./. 0/0
infile2:
1 742428 742430 rs3094315 SNP_A-1909444 C T +
1 769184 769186 rs4040617 SNP_A-4303947 A G -
如果從inifle1在第3列的數據和來自infile 2的列5中的數據同意,並且在infile2 ==「 - 」中的最後一列,那麼我想將來自infile1的列2,4,5中的值切換到來自infile2的列2,6,7中的值。
我可以做一些if語句,但是文件很大(幾個演出),所以它是絕對不可行的,因此,什麼是最好的方式在Python中執行它?
編輯:
for line in infile1:
line = line.split()
for row in infile2:
row = row.split()
if line[4] == row[6]:
if row[-1] == "-":
line[3] == row[3]
line[5] == row[7]
line[6] == row[8]
我可以讀取一個文件的元組的列表,但不加快速度,因爲它是從開始每次迭代的時間要到文件的末尾。
這個問題與Python的文件管理有關。這是重要的算法。請在python中顯示您的想法和嘗試 – Pynchia
您應該使用實際的數據庫而不是兩個平面文本文件。沒有索引的平面文件存在限制,你會看到一個巨大的問題。模塊sqlite3內置於Python,非常強大,特別是作爲平面文件的替代品。 – msw
您的代碼不僅掃描整個列表,而且還重新讀取file2作爲file1的_each_行。讀取一次file2並將其保存在內存中。 – alexis