Утечка памяти, объединяющая 2 панды - PullRequest
0 голосов
/ 02 января 2019

Я не первый, кто спрашивает об этой проблеме, однако моя проблема, кажется, немного отличается от того, что я видел.В основном я пытался объединить фрейм данных 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

Есть идеи?Я достигаю точки, где я собираюсь записать эти два кадра данных в базу данных, чтобы выполнить соединение там.

...