【发布时间】:2019-03-21 20:39:40
【问题描述】:
我已尝试应用过滤器来删除具有太多 NA 的列到我的 dask 数据帧:
df.dropna(axis=1, how='all', thresh=round(len(df) * .8))
不幸的是,dask dropna API 似乎与 pandas 略有不同,既不接受 axis 也不接受 threshold。
解决它的一种部分方法是逐列迭代并删除那些常量(无论它们是否填充了 NA,因为我不介意摆脱常量):
for col in df.columns:
if len(df[col].unique()) == 1:
new_df = df.drop(col, axis = 1)
但这并不能让我应用阈值。我可以通过添加手动计算阈值:
elif sum(df[col].isnull().compute()) / len(df[col]) > 0.8:
new_df = df.drop(col, axis = 1)
但我不确定此时调用 compute 和 len 是否是最佳选择,我很想知道是否有更好的方法来解决这个问题?
【问题讨论】:
标签: python pandas optimization dask