我是这个网站的新手,这是我的第一个问题,如果它的琐碎或我是愚蠢的,请提前道歉:
我的问题是我有两个数据集,目前存储在2个sqlite数据库文件中。第一个(db1)有大约3000万行x8列(18gb),第二个(db2)是20k行×9列。它们有一个共同的列,即subject_id。
在一个完美的世界中,我可以将每个完整的数据库加载到pandas数据帧中,然后按照下面的步骤执行合并,然后对生成的合并数据帧执行数据分析:
pd.merge(df_db1,df_db2,on ='subject_id')
我想要实现的是db1中每一行,其中subject_id与db2中的subject_id匹配,我希望db2的所有列都添加到db1行的末尾。这将意味着db1具有与db2匹配的subject_id,它将附加8列数据,并且它没有匹配的subject_id,这8个附加列将保持空白。
我希望这是有道理的。
我目前的调查方法是,即使我的sqlite浏览器因为其大小而每次加载db1时几乎崩溃,我是否可以使用ATTACH在sql中执行所需的操作然后合并等效命令?如果是这样,请问最好的方法是什么?
如果这不可能或没有效率,最好是在python和pandas中执行所有操作,然后填充新的“合并”数据库。 IE将所有db2加载到一个pandas数据帧中,然后在100万个行块中的pd.read_sql db1,在pandas中执行合并,然后将这个新合并的数据帧逐个发送到新的“合并”数据库?
我正在研究dask,因为这看起来就像我正在使用的有限(8gb内存)内存之后,但我不认为dask dd.pd.read_sql存在。
非常感谢您花时间查看此内容。我已经花了最后一周撕掉头发,因为无法研究如何以这种方式合并这两个数据集。