Python 在Dask中高效地删除行

Python 在Dask中高效地删除行,python,dataframe,dask,Python,Dataframe,Dask,我试图在dask数据帧上删除空值,文档中的示例对列很有效: import dask.dataframe as dd df = dd.read_csv("test.csv",assume_missing=True) df.dropna(how='all', subset=None, thresh=None).compute() 但如果我尝试指定轴0以便按行过滤,则会出现以下错误: import dask.dataframe as dd df = dd.read_csv("test.csv",as

我试图在dask数据帧上删除空值,文档中的示例对列很有效:

import dask.dataframe as dd
df = dd.read_csv("test.csv",assume_missing=True)
df.dropna(how='all', subset=None, thresh=None).compute()
但如果我尝试指定轴0以便按行过滤,则会出现以下错误:

import dask.dataframe as dd
df = dd.read_csv("test.csv",assume_missing=True)
df.dropna(how='all', subset=None, thresh=None,axis=0).compute()
文件还说:

axis:{0 or ‘index’, 1 or ‘columns’}, default 0 (Not supported in Dask)
所以我写了这篇文章作为一个演练:

df = dd.read_csv("test.csv",assume_missing=True)
filter_ = ~(df.isnull().all(axis=1).reset_index()[0])
df.loc[filter_].compute()
但它看起来不像蟒蛇。
另外,我正在重置索引,据我所知,这在dask中是一种低效的操作。

正如您所注意到的,从2.2.0版开始,dask不支持axis参数。要删除列,您必须“手动”检查列是否包含
Nan
s,如果包含,则删除它:

对于
如何='any'

df.drop([c for c in df.columns if df[c].isna().any().compute()], axis = 1)
对于
how='all'

df.drop([c for c in df.columns if df[c].isna().all().compute()], axis = 1)
虽然示例中没有明确列出,
isna()
类似于
max()
,因此它很有效。

您提到我收到了这个错误,但您的问题中没有错误消息,请添加完整的堆栈跟踪