求助:Dask中移除指定列值为空的行的正确方法(dropna与drop方法报错)
解决Dask中删除
tier1_name列空值行的问题 我来帮你搞定这个Dask处理大型CSV的问题~你遇到的错误都是因为Dask DataFrame的方法和Pandas有一些细节差异,咱们一步步梳理:
为什么之前的方法会报错?
- 关于
dropna的错误:Dask的dropna方法没有axis参数,它默认就是针对行(对应Pandas的axis=0)进行操作的,所以你不需要额外传递这个参数,这是和Pandas的一个小区别。 - 关于
drop方法的错误:目前Dask的drop方法仅支持删除列(axis=1)或者指定列名删除,不支持通过布尔索引删除行,所以这个方法走不通。
正确的两种实现方式
方式1:修正dropna的用法
直接去掉多余的axis参数就可以了,how='any'也是dropna的默认值,所以可以省略:
df = df.dropna(subset=['tier1_name'])
方式2:使用布尔索引过滤(更直观)
直接筛选出tier1_name不为空的行,这在Dask里是完全支持的,而且逻辑清晰:
df = df[df['tier1_name'].notnull()]
两种方法都能实现你的需求,处理大型CSV时性能差异不大,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者krk
相关产品推荐
相关产品推荐

