2017-10-12 60 views
1

我試圖匹配不同細菌的DNA螺旋與祖先,我有大約100萬觀察值。我想確定每個細菌的最接近的祖先,即我想將它們與相同或老一代(相等或更小的世代)進行比較,所以我的數據框看起來像這樣(爲了簡單起見,我們假設DNA矢量由一個數組成):使用熊貓尋找每一行的最小距離

bacteria_id generation DNA_vector 
213   230  23 
254   230  18 
256   229  39 
289   229  16 
310   228  24 
324   228  45 

我試圖創建一個矩陣,並選擇從該矩陣的每個細菌的最小值,但因爲這將包括大量的行和列的,我得到memory error創建矩陣之前。 我們假設它不是細菌,而是汽車,我將每輛車與自己的一代進行比較(例如2010年推出的汽車)和舊車。還可以將DNA_vector更改爲多個功能。如果功能數量之間的差異較小,我會認爲它與其他汽車更相似。 所以我想創建兩個額外的列。第一個會告訴最小差異(例如,對於第一個將是1,而最相似的汽車將是310型)

預期成果是:

bacteria_id generation DNA_vector most_similar_bacteria distance 
213   230  23    310    1 (i.e. 24 -23) 
254   230  18    289    2 
256   229  39    324    6     
289   229  16    228    8 
310   228  24    324    19 
324   228  45    NA    NA 

你有什麼建議?

+3

請您刪除所有對遺傳學的參考,並在廣泛的主題提出這個問題?當你不知道你想使用什麼比較時,很難理解這個問題 – Keith

+0

好吧,我將簡化它 –

+0

現在更清楚了嗎? –

回答

0

如果由於大數據集而導致內存錯誤,可以嘗試使用dask。它是一個與熊貓非常相似的「並行」計算庫,允許您使用硬盤而不是RAM來處理更大的數據集。

https://dask.pydata.org/en/latest/

未必是準確的東西,你要尋找的,但我已經爲你描述與大型數據集使用它有好運氣。