【发布时间】:2015-04-28 16:42:52
【问题描述】:
我有一个计算问题。
我正在使用 python 来迭代 2 个 csv 文件。
csv file1= 包含 (6-7) 列.. 重要的列是来自 dbSNP 的“rs ID”列。
csv file2= 3 列,其中 2 列很重要,还有 rs ID 和一个 GENE 符号列
我的问题:
现在我想搜索:来自 csv 文件 1 IN csv 2 的 rs ID 吗?如果是,则从 csv 文件 2 中取出基因符号并将其放入匹配发生的 csv 文件 1 中(位置“x”,例如第 4512451 行)。
csv 文件 1 = 1.3 gb,csv 文件 2 = 8.8 mb
我在 python 中从 csv 文件 2 生成一个字典,我用它在 csv 文件 1 中搜索。
问题:对于 csv 文件 1 中的每一行(rs ID),他遍历整个字典(8.8mb 文件)
这需要很多时间....您知道另一种加快搜索速度的方法吗?我认为字典/哈希表会很好......但它会变慢。
也许从 csv 文件 2 创建一个后缀数组而不是使用字典?
或者python中是否有一些包,其他数据结构(向量化方法)?
非常感谢您的帮助!
【问题讨论】:
-
我建议查看pandas 它支持非常快速地加载 csv 数据、索引和值查找以及从满足条件的另一个数据帧中插入值,在这个阶段你的问题有点广义的,我认为你应该看看 pandas 尝试一些事情,当你卡住时回来
-
如果我读取我的 csv 文件: tp = read_csv('endParsedNOgene.csv', iterator=True, chunksize=10000) # 给出 TextFileReader,它可以迭代 1000 行的块。 df = concat(tp, ignore_index=True) 进程被杀死