筛选Pandas DataFrame以获取缺失值的百分比

时间:2018-10-18 21:16:18

标签: python pandas dataframe

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

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

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

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

Pandas是否有实现我想要的方式,还是我应该使用普通的python?

1 个答案:

答案 0 :(得分:2)

dropnathresh一起使用(阈值:需要许多非NA值。)

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

更新:

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