Итеративное объединение нескольких массивных DataFrames без нехватки памяти - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь объединить ~ 50 фреймов данных (10M x 6) с помощью приведенного ниже фрагмента:

for i, df in enumerate(dfs, start=1):
    df.rename(columns={col:'{}_df{}'.format(col, i) for col in ("N_ALLELES", "N_CHR", "REF:freq", "ALT:freq")}, 
              inplace=True)
merge = functools.partial(pd.merge, on=['Chr.', 'Position'])
result = functools.reduce(merge, dfs)

Код прекрасно работает для dfs до 8 миллионов строк, но происходит сбой из-занедостаточно памяти при масштабировании до 10 миллионов строк. Я рассмотрел другие темы, в которых разрабатываются аналогичные проблемы.

Предложения включают индексирование dfs до слияния (что не решило мою проблему) или использование numpy.memmap, что я не совсем уверен, насколько это соответствует моему текущему подходу?

Любое предложение будет очень полезно!

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