Я не первый, кто спрашивает об этой проблеме, однако моя проблема, кажется, немного отличается от того, что я видел.В основном я пытался объединить фрейм данных 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])
.(У меня есть 5 ГБ оперативной памяти, доступной для вычислений.)
Чтобы попытаться обойти это, я попытался сделать это итеративно, как показано ниже, но после 6 первых итераций, когда время вычисления памяти немного увеличивается от одного к другомувзорвется на седьмом:
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
Есть идеи?Я достигаю точки, где я собираюсь записать эти два кадра данных в базу данных, чтобы выполнить соединение там.