使用Dask读取大型CSV文件时行数异常翻倍问题求助
解决Dask读取CSV时行数异常暴增的问题
可能的原因及对应修复方案:
- 多余的dtype字段干扰解析:你在
dtype里指定了supplier字段,但usecols只选取了custom_rp_code,这种不匹配可能打乱Dask的解析逻辑。删掉dtype里没用的'supplier': 'float64',只保留目标列的类型声明:df = dd.read_csv('product_locations_2022-09-19.csv', usecols=['custom_rp_code'], dtype={'custom_rp_code': 'object'}, blocksize="10MB") - CSV存在未转义的换行符:如果
custom_rp_code字段里包含未被引号包裹的换行(比如值里有\n),Dask分块读取时会把同一行拆成多行,导致总行数虚高。可以强制指定换行符,或者开启全字段引用解析(需先导入csv模块):import csv df = dd.read_csv('product_locations_2022-09-19.csv', usecols=['custom_rp_code'], dtype={'custom_rp_code': 'object'}, quoting=csv.QUOTE_ALL) - blocksize设置过小:10MB的块大小对于100万行的文件来说可能太细碎,频繁分块容易引发解析错误。要么去掉
blocksize参数让Dask自动处理,要么调大到64MB/128MB:df = dd.read_csv('product_locations_2022-09-19.csv', usecols=['custom_rp_code'], dtype={'custom_rp_code': 'object'})
额外验证步骤:
- 执行
df.head(20)查看前20行,确认是否有明显重复的行; - 用
df.npartitions查看分块数量,结合文件大小判断分块是否合理; - 如果内存允许,用
pd.read_csv读取整个文件,对比行数和value_counts结果,确认是Dask读取问题还是文件本身的问题。
内容的提问来源于stack exchange,提问作者Ty Swenson
相关产品推荐
相关产品推荐

