您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 如果列超过特定数量的NA值,则删除该列

5b51 2022/1/14 8:22:49 python 字数 2403 阅读 598 来源 www.jb51.cc/python

我想写一个程序,如果它超过特定数量的NA值,就会删除一列.这就是我所做的. def check(x): for column in df: if df.column.isnull().sum() > 2: df.drop(column,axis=1) 执行上面的代码没有错误,但在执行df.apply(check)时,会出现大量错误. P.S:我知道df.dropna中的th

概述

def check(x):
for column in df:
    if df.column.isnull().sum() > 2:
        df.drop(column,axis=1)

执行上面的代码没有错误,但在执行df.apply(check)时,会出现大量错误.

P.S:我知道df.dropna中的thresh争论(thresh,axis)

有什么提示吗?为什么我的代码不起作用?

谢谢

thresh : int,optional

Require that many non-NA values.

因此,对于vectorize解决方案,从DataFrame的长度中减去它:

N = 2
df = df.dropna(thresh=len(df)-N,axis=1)
print (df)
   A  D    E  F
0  a  1  5.0  a
1  b  3  3.0  a
2  c  5  6.0  a
3  d  7  9.0  b
4  e  1  2.0  b
5  f  0  NaN  b

我建议使用DataFrame.pipe作为输入DataFrame的apply函数,将df.column更改为df [column],因为带有来自变量的动态列名的点表示法失败(它尝试选择列名列):

df = pd.DataFrame({'A':list('abcdef'),'B':[np.nan,np.nan,5,np.nan],'C':[np.nan,8,2,3],'D':[1,3,7,1,0],'E':[5,6,9,'F':list('aaabbb')})

print (df)
   A    B    C  D    E  F
0  a  NaN  NaN  1  5.0  a
1  b  NaN  8.0  3  3.0  a
2  c  NaN  NaN  5  6.0  a
3  d  5.0  NaN  7  9.0  b
4  e  5.0  2.0  1  2.0  b
5  f  NaN  3.0  0  NaN  b

def check(df):
    for column in df:
        if df[column].isnull().sum() > 2:
            df.drop(column,axis=1,inplace=True)
    return df

print (df.pipe(check))
   A  D    E  F
0  a  1  5.0  a
1  b  3  3.0  a
2  c  5  6.0  a
3  d  7  9.0  b
4  e  1  2.0  b
5  f  0  NaN  b

总结

以上是编程之家为你收集整理的python – 如果列超过特定数量的NA值,则删除该列全部内容,希望文章能够帮你解决python – 如果列超过特定数量的NA值,则删除该列所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶