概述
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值,则删除该列所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧