2016-08-30 30 views
1

我创建一个df=dask.DataFrame.read_csv('s3://bucket/*.csv')数据帧。当我执行一个df[df.a.isnull()].compute操作时,我得到一组符合过滤标准的行。我想知道这些返回的行属于哪些文件,以便我可以调查为什么这些记录具有空值。该DataFrame具有数十亿行和记录与遗漏值都在个位数。有没有一种有效的方式来做到这一点?如何映射`dask.DataFrame`的结果的CSV

回答

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)) 
+0

作品,谢谢! –