我有一个数据框如下
df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.45, 2.33, np.nan], 'C': [4, 5, 6], 'D': [4.55, 7.36, np.nan]})
我想替换丢失的值,即。
np.nan
以一般的方式。为此,我创建了一个函数,如下所示
def treat_mis_value_nu(df):
df_nu = df.select_dtypes(include=['number'])
lst_null_col = df_nu.columns[df_nu.isnull().any()].tolist()
if len(lst_null_col)>0:
for i in lst_null_col:
if df_nu[i].isnull().sum()/len(df_nu[i])>0.10:
df_final_nu = df_nu.drop([i],axis=1)
else:
df_final_nu = df_nu[i].fillna(df_nu[i].median(),inplace=True)
return df_final_nu
当我按如下方式应用此函数时
df_final = treat_mis_value_nu(df)
我得到一个数据帧如下
A B C
0 1 1.0 4
1 2 2.0 5
2 3 NaN 6
所以它实际上已经删除了列
D
正确,但未能删除列
B
.
我知道过去有人讨论过这个问题(
here
)我还是会错过什么?