В этом случае, я не думаю, что вам на самом деле требуется, чтобы словарь zip_dict
лениво читал в этих заархивированных файлах с помощью Pandas.
На основании этот очень похожий вопрос SO для чтения (.gz
) сжатые *.csv
файлы с использованием Dask (также показанные здесь здесь ), один из возможных подходов, который вы можете предпринять, это следующий
A.лениво читайте файлы, используя Pandas и dask.delayed
(не забудьте указать имена столбцов, которые вы хотите сохранить) и создайте список отложенных объектов
B.Преобразовать в один кадр данных Dask, используя dd.from_delayed
, указав dtype
столбцов ( в соответствии с рекомендациями ) - нужно указать dtype
только для 2 необходимых вам столбцов
import glob
import pandas as pd
import dask.dataframe as dd
from dask.delayed import delayed
from collections import OrderedDict
file_list = glob.glob('my_directory/zip_files/*.zip')
# Lazily reading files into Pandas DataFrames
dfs = [delayed(pd.read_csv)(f, compression='zip', usecols=['time','cik'])
for f in file_list]
# Specify column dtypes for columns in Dask DataFrame (recommended)
my_dtypes = OrderedDict([("time",int), ("cik",int)])
# Combine into a single Dask DataFrame
ddf = dd.from_delayed(dfs, meta=my_dtypes)
print(type(ddf))
<class 'dask.dataframe.core.DataFrame'>