python 利用all(),any() 查找存在0、全是0、含缺失值的列

df数据集

df = pd.DataFrame({'x':['A','C','B','D','C','B','B','A','D']
,'num':[np.nan,23,np.nan,54,0,1,8,9,12]
,'a':[np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]})

>>  x	num	a
0	A	NaN	NaN
1	C	23.0 NaN
2	B	NaN	 NaN
3	D	54.0 NaN
4	C	0 NaN
5	B	1.0	NaN
6	B	8.0	NaN
7	A	9.0	NaN
8	D	12.0	NaN

查找存在0或全是0的列并返回列名

  • df中存在0的列名
df.loc[:,(df==0).any()].columns

>> Index(['num'], dtype='object')
  • df中全是0的列名
df.loc[:,(df==0).all()].columns

>> Index([], dtype='object')

同理,缺失值:

  • 取出df中全是缺失值的列
df.loc[:,(df.isnull().all()].columns
  • 取出df中存在缺失值的列
df.loc[:,(df.isnull()).any()].columns    
  • 用python中自带函数对df的缺失值删除处理。
df.dropna(axis = 0)   # 删除df中存在缺失值的行
df.dropna(axis = 1 ) # 删除df中存在缺失值的列
df.fillna(0) # 将所有缺失值填补为0
  • 剔除df,num列中为空值的行
df.loc[df['num'].notnull(),:] 
>x	num	a
1	C	23.0 NaN
3	D	54.0 NaN
4	C	52.0 NaN
5	B	1.0	NaN
6	B	8.0	NaN
7	A	9.0	NaN
8	D	12.0 NaN

你可能感兴趣的:(python程序语言设计)