在Das中有效地删除行

2024-04-20 05:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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以按行进行筛选,则会出现以下错误:

^{pr2}$

文件还说:

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()

但它看起来不像Python。 另外,我正在重置索引,据我所知,在dask中这是一个效率低下的操作。在


Tags: orcsvtestnonetruedfreadindex
1条回答
网友
1楼 · 发布于 2024-04-20 05:43:56

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

对于how = 'any'

df.drop([c for c in df.columns if df[c].isna().any().compute()], axis = 1)

对于how = 'all'

^{pr2}$

虽然没有在示例中明确列出,isna()是一个trivially parallelizable operation类似{},因此它是有效的。在

相关问题 更多 >