我正在尝试寻找一种快速且节省内存的方法,以从类似于此的表格文件中检索特定的数据点:
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
在此表中,行名和列名都是唯一的。原始文件的大小为7GB。它不会更改,因此,如果可以加快处理速度,我也可以将其转换为其他格式。 也许有一种方法可以预先生成索引?
我希望能够仅通过指定我感兴趣的列和行的名称来检索整数8
。使用函数func("chr1:925747", "88ca")
。
到目前为止,我已经尝试在庞大文件的一部分(仅330 MB)上使用pandas
,并且检索信息需要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表帮助吗?我使用“ .to_sql
”从pandas数据帧生成了一个sql表,但是随后我的列标题丢失了。
答案 0 :(得分:0)
您可以使用数据表,该数据表的读取速度比熊猫快,但数据表中并没有所有功能都可以在熊猫中使用
import datatable as dt
dt_df = dt.fread("../input/loan.csv")
但是阅读后您可以将其转换为熊猫
dt_df.to_pandas()