объединить два больших блока данных - PullRequest
0 голосов
/ 31 января 2019

У меня есть два больших фрейма данных: один содержит 3M строк, а другой содержит 2M строк 1-й кадр данных:

    sacc_id$    id$     creation_date
0   0011200001LheyyAAB  5001200000gxTeGAAU  2017-05-30 13:25:07 

2-й кадр данных:

    sacc_id$    opp_line_id$    oppline_creation_date
0   001A000000hAUn8IAG  a0WA000000BYKoWMAX  2013-10-26

Мне нужно объединить их:

case = pd.merge(limdata, df_case, left_on='sacc_id$',right_on='sacc_id$')

Но у меня проблема с памятью:

pandas/_libs/join.pyx in pandas._libs.join.inner_join()

MemoryError: 

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

Любая помощь, пожалуйста?спасибо

1 Ответ

0 голосов
/ 31 января 2019

Я предлагаю использовать Dask, когда вы имеете дело с большими фреймами данных.Dask поддерживает структуры данных Pandas dataframe и Numpy array и может работать на локальном компьютере или масштабироваться для работы в кластере.

Вы можете легко преобразовать свой фрейм данных Pandas в Dask, который состоит из меньших разделенных фреймов данных Pandas и, следовательно, допускает подмножество синтаксиса запросов Pandas.

вот пример того, как вы можете это сделатьit:

import dask.dataframe as dd

limdata= dd.read_csv(path_to_file_1)
df_case= dd.read_csv(path_to_file_2)

case = dd.merge(limdata, df_case, left_on='sacc_id$',right_on='sacc_id$')

Существуют советы по передовым методам разделения разделов ваших фреймов для повышения производительности.Я считаю, что читал об этом.Также рекомендуется не использовать в имени столбца специальные символы, такие как $.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...