Свободная память при объединении двух наборов данных в пандах - PullRequest
0 голосов
/ 18 октября 2018

У меня есть две огромные таблицы как pandas объекты, которые вряд ли могут поместиться в памяти, и мне нужно объединить их в третью:

df = pd.melt(df, id_vars='index', value_vars=cell_ids, 
             var_name='cell_id', value_name='expr')
df_raw = pd.melt(df_raw, id_vars='index', value_vars=cell_ids, 
             var_name='cell_id', value_name='raw_expr')

df_combined = pd.merge(df, df_raw, on="index")

Есть ли способ удалить df иdf_raw на лету при создании df_combined, чтобы я не мог выйти из памяти при выполнении операции merge?

Это не дублируется, потому что:

Мне нужноосвободить память на лету.Я не могу просто делиться на два кадра данных, потому что я не смогу запустить слияние.Я не могу сделать Del после запуска слияния, потому что из-за ошибки памяти уже произойдет.Итак, мне нужен способ создания объединенной таблицы и одновременного уничтожения входных.Я подумал, что, может быть, есть какие-то пакеты, программное обеспечение для этого.

1 Ответ

0 голосов
/ 18 октября 2018

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

df = pd.concat([df1,...,dfn])

, тогда вы можете объединить каждый из маленьких фреймов данных df1, ..., dfn с df_raw.После каждого слияния вы можете сохранить этот фрейм данных на свой диск.После того как все слияние завершено, вы освобождаете всю свою память, загружаете все объединенные таблицы и объединяете их.

Скажите, если вам нужен технический совет, как это сделать.

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