首页 > 解决方案 > 使用 Dask 读取文件列表

问题描述

我发现 Dask 可以通过csv这种方式读取多个文件:

import dask.dataframe as dd
df = dd.read_csv('myfiles.*.csv')  # doctest: +SKIP

但是,如果我想加载其中的一部分而不是全部怎么办:

my_files = ['file1.csv', 'file3.csv','file7.csv']
df = dd.read_csv(my_files)

但这不起作用:

ValueError:长度不匹配:预期轴有 2 个元素,新值有 3 个元素

标签: pythonpython-3.xcsvdataframedask

解决方案


我的错误是我的一些csv文件有不同的列数。将文件列表读取到一个数据框的工作方式如下:

得到dask.dataframe

df = dd.read_csv(["small1.csv", "small2.csv"])
print(df.shape)
print(type(df))

输出:

(Delayed('int-863f32f2-a8c3-4ac9-b31f-0186541c347c'), 3) 
<class 'dask.dataframe.core.DataFrame'>

得到pandas.dataframe

df = dd.read_csv(["small1.csv", "small2.csv"])
df = df.compute()
print(df.shape)
print(type(df))

输出:

(11000, 3)
<class 'pandas.core.frame.DataFrame'>

推荐阅读