Я пытаюсь найти быстрый и эффективный способ извлечения определенных точек данных из табличного файла, который выглядит примерно так:
chrom:pos 04a0 7ee8 88ca 477a
chr1:925745 3 1 5 1
chr1:925746 3 1 5 1
chr1:925747 4 1 8 1
chr1:925749 4 1 5 1
В этой таблице имена строк, а также столбецимена уникальны.Исходный файл имеет размер 7 ГБ.Он не меняется, поэтому я мог бы также преобразовать его в другой формат, если это ускорит процесс.Может быть, есть способ сгенерировать индекс заранее?
Я бы хотел получить целое число 8
, просто указав имя интересующего меня столбца и строки, например, используя функциюfunc("chr1:925747", "88ca")
.
До сих пор я пытался использовать pandas
для подмножества моего огромного файла (всего 330 МБ), и для получения информации требуется> 30 секунд, что слишком медленно для моегопрецедент.
Мой код панд:
import pandas as pd
import sys
inputfile = sys.argv[1]
chrompos = sys.argv[2]
id = sys.argv[3]
data=pd.read_csv(inputfile, sep="\t", index_col=0)
result=data.at[chrompos, id]
print result
Может быть, использование таблицы SQL поможет ...?Я сгенерировал таблицу sql из фрейма данных pandas, используя «.to_sql
», но затем мои заголовки столбцов теряются.