首页 > 解决方案 > 过滤 Pandas DataFrame 以获取缺失值的百分比

问题描述

我有一个 Pandas DataFrame,其中有很多由np.nan. 我希望能够返回 DataFrame 中缺失 80% 以上值的行。

到目前为止,我已经尝试了以下方法:

data.loc[lambda x: (len(x.isna()) / len(x.columns)) > .8]

但这显然不是loc传递 lambda 函数时的工作方式。我对此的解释是,Pandas 只是在每一行上运行一个循环并应用该函数,期望一个TrueFalse值作为回报,分别指示保留或丢弃该行。本质上是一个过滤功能。

有没有一种 Pandas 方法可以实现我想要的,还是我应该求助于普通的 python?

标签: pythonpandasdataframe

解决方案


使用dropnawith thresh(thresh : 需要很多非 NA 值。)

df.dropna(thresh=len(df.columns)*0.8)

更新 :

df[(df.isna().sum(1)/df.shape[1]).gt(0.8)]

推荐阅读