我正在使用dask
读取一个大的csv文件。我想根据一列的值删除几行。如果该特定列的行值为空,我想删除整行。
我尝试使用.dropna
:
df = df.dropna(subset=['tier1_name'],how = 'any',axis =0)
然而,我得到了这个错误:
TypeError: dropna() got an unexpected keyword argument 'axis'
所以我用.drop
代替:
df.drop(df['tier1_name'].isnull(), axis = 0)
但后来得到了这个错误:
"Drop currently only works for axis=1 or when columns is not None"
NotImplementedError: Drop currently only works for axis=1 or when columns is not None
我不明白我应该用什么来执行所需的操作。帮助
这里的关键问题是,通常情况下,dask
在没有评估的情况下不会知道行数或其内容,因此基于行的操作并不总是易于集成。
作为一种解决方案,可以使用带有适当掩码的.loc
,这个伪代码可能会有所帮助:
mask = df['tier1_name'].notna()
df_modified = df.loc[mask]
# note that if you need to use .isna(), then the mask value
# should be negated