连接熊猫中两个大型数据集的最佳方法

我正在从两个需要连接的不同数据库下载两个数据集。当我将它们存储为CSV时,它们各自大约有500MB。分别将这两个文件装入内存,但当我同时加载这两个文件时,有时会出现内存错误。当我试图将它们与熊猫合并时,我肯定会遇到麻烦

对它们进行外部连接以避免内存错误的最佳方法是什么?我手头没有任何数据库服务器,但如果有帮助的话,我可以在我的计算机上安装任何类型的开源软件。理想情况下,我仍然希望只在熊猫身上解决这个问题,但不确定这是否可行

澄清一下:合并指的是外部连接。每个表有两行:产品和版本。我想检查哪些产品和版本仅在左表、右表和两个表中。我用一个

pd.merge(df1,df2,左上=['product','version'],右上=['product','version'],how='outer')

这似乎是dask设计的任务。本质上,dask可以在内核外执行pandas操作,因此您可以处理不适合内存的数据集。dask.dataframeAPI是pandasAPI的一个子集,因此不应该有太多的学习曲线。请参阅Dask数据帧概述页面,了解一些其他特定于数据帧的详细信息

将dask.dataframe作为dd导入
#读取csv文件。
df1=dd.read\u csv('file1.csv'))
df2=dd.read\u csv('file2.csv'))
#合并csv文件。
df=dd.merge(df1,df2,how='outer',on=['product','version']))
#写入输出。
df.to_csv('file3.csv',index=False)

假设'product''version'是唯一的列,那么将合并替换为:

df=dd.concat([df1,df2])。删除重复项()

我不完全确定这是否会更好,但显然,在dask中,没有在索引上完成的合并是“缓慢的”,因此值得一试

发表评论