Во время выполнения моей работы я хочу построить pandas DataFrame с его внутренним состоянием на каждом этапе выполнения. Я хочу сделать это, потому что хочу иметь возможность позже использовать DataFrame для анализа. Итак, это контекст: я начинаю с пустого DataFrame, и после того, как задание завершает создание всех своих данных, окончательный размер DataFrame составляет 7 ГБ (максимум).
Это подходы, которые я пробовал far:
- Я могу вести список списков, моя работа продолжает добавлять новые строки в этот список. В конце я запускаю что-то вроде:
df = pd.DataFrame(rows, columns=list("abc"))
. Это самый быстрый метод, но он очень расточителен с точки зрения использования памяти. - Я больше не использую списки списков, а вместо этого продолжаю звонить
df = df.append([{"a": 1.0, "b": 1.0, "c": "hello"}])
. Все начинается нормально, но по мере роста DataFrame начинается копирование большого количества памяти, и оно становится очень медленным.
Итак, ни один из них не идеален. Я могу оценить окончательный размер DataFrame до того, как мое задание будет запущено (я думаю, что обычно могу точно сопоставить размер, если честно), поэтому я хотел бы сказать pandas, чтобы выделить всю память вперед (или, по крайней мере, большой достаточно куска, чтобы продержаться какое-то время), а затем мне нужен метод, аналогичный df.append
, который просто добавит новую строку в конец предварительно выделенной памяти. В идеале было бы достаточно умен, чтобы при необходимости изменить размер памяти.
Возможно, я чего-то сильно упускаю, но я искренне не мог найти способ сделать это, где бы я ни смотрел.