группа панд с суммой () на большой CSV-файл?

У меня есть большой файл (19 ГБ или около того), который я хочу загрузить в память, чтобы выполнить агрегирование по некоторым столбцам.

файл выглядит так:

id, col1, col2, col3, 
1 ,  12 , 15 , 13 
2 ,  18 , 15 , 13 
3 ,  14 , 15 , 13 
3 ,  14 , 185 , 213 

обратите внимание, что я использую столбцы (id, col1) для агрегации после загрузки в фрейм данных, также обратите внимание, что эти ключи могут повторяться несколько раз подряд, например:

3 ,  14 , 15 , 13 
3 ,  14 , 185 , 213 

Для небольшого файла, следующий скрипт может сделать работу

import pandas as pd
data = pd.read_csv("data_file", delimiter=",")
data = data.reset_index(drop=True).groupby(["id","col1"], as_index=False).sum()

Однако для большого файла мне нужно использовать chunksize при чтении файла csv, чтобы ограничить количество строк, загружаемых в память:

import pandas as pd
data = pd.read_csv("data_file", delimiter=",", chunksize=1000000)
data = data.reset_index(drop=True).groupby(["id","col1"], as_index=False).sum()

В последнем случае возникнет проблема, если строки, в которых (id, col1) похожи, разделены на разные файлы. Как я могу справиться с этим?

РЕДАКТИРОВАТЬ

Как указывает @EdChum, существует потенциальный обходной путь, то естьне просто добавить результаты groupby к новому csv, прочитать их обратно и выполнить агрегацию снова, пока размер df не изменится.

Это, однако, имеет худший сценарий, который не обрабатывается, а именно:

когда все файлы (или достаточно много файлов, которые память не может обработать) имеют одинаковое проблемное сходство (id, col1) в конце. Это заставит систему вернуть MemoryError

Ответы на вопрос(2)

Ваш ответ на вопрос