如何将`dask.DataFrame`的结果映射到csvs

时间:2016-08-30 15:46:53

标签: python dask

我使用df=dask.DataFrame.read_csv('s3://bucket/*.csv')创建了一个数据框。当我执行df[df.a.isnull()].compute操作时,我得到一组符合过滤条件的行。我想知道这些返回的行属于哪些文件,以便我可以调查为什么这些记录具有空值。 DataFrame有数十亿行,缺少值的记录以个位数表示。有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:0)

如果你的CSV文件很小,我建议每个文件创建一个分区

df = dd.read_csv('s3://bucket/*.csv', blocksize=None)

然后计算每个分区的空元素数量:

counts = df.a.isnull().map_partitions(sum).compute()

然后您可以找到文件名

from s3fs import S3FileSystem
s3 = S3FileSystem()
filenames = s3.glob('s3://bucket/*.csv')

并比较两个

dict(zip(filenames, counts))