我有一个Pandas DataFrame,其中有很多缺少的值,这些值由np.nan
表示。我希望能够返回缺少80%以上值的DataFrame中的行。
到目前为止,我已经尝试了以下方法:
data.loc[lambda x: (len(x.isna()) / len(x.columns)) > .8]
,但这显然不是loc
在传递lambda函数时的工作方式。我对此的解释是,Pandas只是在每一行上运行一个循环并应用该函数,并期望返回True
或False
值,分别表示保留或丢弃该行。本质上是过滤器功能。
Pandas是否有实现我想要的方式,还是我应该使用普通的python?
答案 0 :(得分:2)
将dropna
与thresh
一起使用(阈值:需要许多非NA值。)
df.dropna(thresh=len(df.columns)*0.8)
更新:
df[(df.isna().sum(1)/df.shape[1]).gt(0.8)]