Есть несколько способов сделать это. Наиболее похожим на ваше предложение будет что-то вроде:
zf = ZipFile("year.zip")
files = list(zf.namelist)
parts = [dask.delayed(pandas.read_csv)(f) for f in files)]
df = dd.from_delayed(parts)
Это работает, потому что zip-файл имеет список смещений, так что файлы компонентов могут быть прочитаны независимо; однако производительность может зависеть от того, как был создан архив, и помните: у вас есть только одно устройство хранения, пропускная способность устройства может стать вашим узким местом в любом случае. Используя преимущества fsspec
, абстракции файловой системы, используемой dask
df = dd.read_csv('zip://*.csv', storage_options={'fo': 'year.zip'})
(конечно, выберите шаблон glob, соответствующий вашим файлам; вы также можете использовать список файлов здесь , если вы добавите к ним "zip: //")