for x in data.columns: # 过滤掉类型为object的列 if str(data[x].dtypes) == 'object': continue if data[x].isnull().sum() > 0: # 获取非空元素的中位数 data[x] = data[x].fillna(value=np.median(data.loc[~data[x].isnull(), x]))
分步解释
-
data[x].isnull()
:data[x].isnull()
返回一个布尔序列(Series),标记data[x]
列中哪些值是缺失值(NaN
)。
-
~data[x].isnull()
:~
是取反操作符,将布尔序列中的True
转为False
,False
转为True
。这会标记哪些值不是缺失值(即存在值的地方为True
)。
-
data.loc[~data[x].isnull(), x]
:data.loc[...]
用于选择数据框data
中的行和列。data.loc[~data[x].isnull(), x]
会选择data[x]
列中所有非缺失值的行。
-