Я использую pandas для слияния outer
в наборе из примерно 1000-2000 файлов CSV. Каждый CSV файл имеет столбец идентификатора id
, который разделяется между всеми файлами CSV, но каждый файл имеет уникальный набор столбцов из 3-5 столбцов. В каждом файле содержится около 20000 уникальных строк id
. Все, что я хочу сделать, это объединить их вместе, объединив все новые столбцы и используя столбец id
в качестве индекса слияния.
Я делаю это с помощью простого вызова merge
:
merged_df = first_df # first csv file dataframe
for next_filename in filenames:
# load up the next df
# ...
merged_df = merged_df.merge(next_df, on=["id"], how="outer")
Проблема в том, что с почти 2000 CSV файлами я получаю MemoryError
в операции merge
, созданной pandas. Я не уверен, что это ограничение из-за проблемы в операции слияния?
Окончательный блок данных будет содержать 20 000 строк и примерно (2000 х 3) = 6000 столбцов. Это большой, но недостаточно большой, чтобы потреблять всю память на компьютере, который я использую, который имеет более 20 ГБ ОЗУ. Этот размер слишком большой для pandas манипуляции? Должен ли я использовать что-то вроде sqlite? Есть ли что-то, что я могу изменить в операции merge
, чтобы он работал над этим масштабом?
спасибо.