我希望我没有朝着错误的方向前进,但以下是我要做的
我有一个超过1000万行(和2列)的文件,我只需要大约15000行。对于这15000行,我需要得到第2列中的值。我将此文件制作成一个SQLite数据库并为其编制索引。平面文件的示例:
id primer
1 TDXY45
2 TDYZ56
3 TXYY75
我还有一个15000行的文件。我将它作为pandas数据帧导入(我们称之为df
),并对它做了一些工作,所以现在它有两列,id
和num
我需要在sqlite数据库中找到所有这些id
,并在df
中附加第三列primer
。所需输出(其中缺少id 2,因为它不在df
):
id num primer
1 24 TDXY45
3 51 TXYY75
这可能吗?我是不是完全走错了路?
我花了很多时间研究如何最好地处理搜索700MB文件中的1000万行以提取15000个文件子集的数据。我不懂信息论;我不确定如何平衡内存使用与I/O处理等。我首先考虑使用pandas和chunksize选项导入大文件,但经过一些研究(包括this post),决定尝试使用sqlite解决方案。请随意提出完全不同的解决方案,可能更适合我的需要。我对这类任务缺乏经验,我真的很想更好地理解它。我感谢你的帮助
编辑:从昨晚起我想到了什么
ids = df['id'].tolist()
select = f"SELECT id, primer FROM g WHERE seq IN ({','.join('?' * len(ids))})"
rows = c.execute(select, ids).fetchall()
在此之后,我只需要将行*附加到我的df中,由id匹配。我可以做到这一点。但这似乎不是解决这个问题的最好办法
目前没有回答
相关问题 更多 >
编程相关推荐