我有两个csv文件,我把它们加载到pandas数据框中。一个文件很大,大约10M行和20列(都是字符串类型),大小约为1G字节,另一个文件很小,大约5k行,5列,大小约为1M。我想通过两个数据帧之间的一个公共列进行内部连接。在
我就是这样加入的
mergeddataset = pd.merge(smallDataFrame, largeDataFrame, on='uid', how='inner')
我尝试过,如果我采样1%的大数据集,程序运行平稳,没有任何问题,并在5秒钟内完成,所以我验证了我的代码函数应该是可以的。在
但如果我加入真正的大数据集,程序将在大约20-30秒后终止,错误消息是Process finished with exit code 137 (interrupted by signal 9: SIGKILL)
。我在macosx上使用的是python2.7和miniconda,运行的是PyCharm。我的机器有16G内存,远远超过1G文件的大小。在
想知道是否有任何想法来调整pandas中数据帧连接的性能,或者其他任何快速的内部连接解决方案?在
我的另一个困惑是,为什么程序会被杀死?由谁和为什么?在
编辑1,错误捕获在/var/log中/系统日志进行内部连接时
^{pr2}$谨致问候, 林
检查两边“uid”列的基数。很有可能您的连接正在将数据乘以许多倍。例如,如果在dataframe1的100条记录中有值为1的uid,在dataframe2的10条记录中有值为1的uid,那么连接将产生1000条记录。在
为了检查基数,我将执行以下操作:
此代码将检查出现在其他帧的uid中的“uid”值是否重复。在
相关问题 更多 >
编程相关推荐