我使用的乳腺癌-威斯康星州数据集如下所示:x1c 0d1x
裸核列有16个缺失的条目,用“?”表示,我用NAN替换,如下所示:
df.replace('?', np.NAN, regex=False, inplace = True)
导致以下结果(16个缺失条目中的几个):
我想用每个类中出现频率最高的值来替换NAN。详细说明一下,“裸核”列中出现频率最高的值class=2(良性癌症)应用来替换所有“裸核”== NAN且Class == 2的行。class = 4(恶性)也是如此。
我尝试了以下方法:df[df['Class']== 2]['Bare Nuclei'].fillna(df_vals[df_vals['Class']==2]['Bare Nuclei'].mode(), inplace=True)
df[df['Class']== 4]['Bare Nuclei'].fillna(df_vals[df_vals['Class']==4]['Bare Nuclei'].mode(), inplace=True)
它没有导致任何错误,但当我尝试这个:df.isnull().any()
裸原子核显示“真”,这意味着NAN值仍然存在。
(“裸核”列属于对象类型)
我不知道我做错了什么。请帮帮忙!谢谢。
3条答案
按热度按时间2ul0zpep1#
您可以通过
groupby()
+agg()
+fillna()
进行尝试:或
通过使用
loc
方法:eulz3vhy2#
作为一个迟来的答案,如果您想用“类”列中的值替换“裸原子核”列中的每个NaN:
如果您希望针对特定班级进行更换:
7dl7o3gd3#