python – 如果列超过特定数量的NA值,则删除该列
发布时间:2021-01-11 23:46:04 所属栏目: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
我想写一个程序,如果它超过特定数量的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中的thresh争论(thresh,axis) 有什么提示吗?为什么我的代码不起作用? 谢谢 解决方法我认为最好的是使用dropna 参数thresh:
因此,对于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 我建议使用 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 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |