Задать вопрос
@vlatek
Digital Nomad

Как запаковать датафрейм в zip архив содержаший несколько csv файлов?

Есть датафрейм, допустим на 1 млн строк, нужно сохранить результат в один zip архив, содержащий 100 csv файлов, в каждом по 10к строк. Реализовал с pandas такую функцию, которая делит датафрейм на эти файлы, но архивирует каждый отдельно

def result_writer(data):
        chunk_size = 10000 #по сколько строк делить файл
        counter = 0
        for chunk in pd.read_csv(data, chunksize=chunk_size):
            counter = counter + 1
            chunk.to_csv(f'file_{str(counter)}.csv.gz',compression='gzip',index=False)

Как подправить, чтобы у меня получился один zip архив, а не сто?
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Формат ZIP поддерживает стриминг данных файлов. Нужно просто для каждого CSV сначала генерировать заголовок, а затем отдавать строчку с данными генератору CSV. Тот, в свою очередь, должен заполнять буфер для стриминга Deflate.

Не нужно путать GZip и ZIP. Это совершенно разные форматы. ZIP - это контейнер (архив) для множества файлов и поддерживает различные виды сжатия. А GZip представляет из себя формат для стриминга лишь одного файла.
Ответ написан
Комментировать
@pfg21
ex-турист
если тебе нужен архив zip то его и используй.
gzip это другое, это чисто компрессор содержит только "один файл"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽