我不是第一个问这个问题的人,但是我的问题似乎与我看到的有所不同。基本上,我尝试合并数据帧A.shape = [900k, 6]
和B.shape = [600k, 6]
,但遇到pd.merge(A, B, how='left', left_on=[col_1, col_2], right_on=[col_1, col_2])
时出现内存错误。 (我有5GB的RAM可用于计算。)
为了尝试绕过它,我尝试像下面这样反复进行,但是在第6次迭代之后,内存计算时间从一个迭代到另一个迭代略有增加,在第7个迭代时爆炸:
def partial_merge(A, partial_B):
return pd.merge(A, partial_B,
how='left',
left_on=['col_1','col_2'],
right_on = ['col_1','col_2'])
low_bound = 0
for high_bound in tqdm(range(0, merged_stats.shape[0], 10000)):
A = partial_merge(A, B.iloc[low_bound:high_bound, :])
gc.collect()
low_bound = high_bound
有什么主意吗? 我将要把这两个数据帧写入数据库以在那里进行联接的地步。