python - 过滤 Pandas DataFrame 以获取缺失值的百分比
问题描述
我有一个 Pandas DataFrame,其中有很多由np.nan
. 我希望能够返回 DataFrame 中缺失 80% 以上值的行。
到目前为止,我已经尝试了以下方法:
data.loc[lambda x: (len(x.isna()) / len(x.columns)) > .8]
但这显然不是loc
传递 lambda 函数时的工作方式。我对此的解释是,Pandas 只是在每一行上运行一个循环并应用该函数,期望一个True
或False
值作为回报,分别指示保留或丢弃该行。本质上是一个过滤功能。
有没有一种 Pandas 方法可以实现我想要的,还是我应该求助于普通的 python?
解决方案
使用dropna
with thresh
(thresh : 需要很多非 NA 值。)
df.dropna(thresh=len(df.columns)*0.8)
更新 :
df[(df.isna().sum(1)/df.shape[1]).gt(0.8)]
推荐阅读
- html - 缩进一个换行的文本
- django - pycryptodome 解密功能失败的可能原因是什么?
- mysql - 如何将 pspg 用于 mycli 寻呼机
- reactjs - 文本字段应仅更改一个值,而不应更改整个列表
- react-router - 使用多步骤表单和菜单反应路由
- ios - Swift 视图未显示 UIImage,尽管它从 API 打印出值
- amazon-web-services - 如何为 S3 存储桶启用写入和读取事件的对象级日志记录(远程状态)
- python - Python:Android上的权限被拒绝问题
- java - 从侦听器中访问对象
- javascript - 请修复错误:“TypeError:无法读取未定义的属性 'id'。”