【发布时间】:2019-07-19 15:34:35
【问题描述】:
我有一个如下的数据框
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)。还是我可能遗漏了什么?
【问题讨论】:
-
您能否发表声明,解释您想要在您的
generic函数中实现什么?