我想用中位数来估算名为 Bare Nuclei 的数据帧的列,但出现了此错误('必须是 str,而不是 int','发生在索引 Bare Nuclei')下面的代码表示列data['Bare Nuclei]的唯一值
data['Bare Nuclei'].unique()
array(['1', '10', '2', '4', '3', '9', '7', '?', '5', '8', '6'],
dtype=object)
然后,我尝试将 ?
替换为 nan
,然后将 nan
替换为中位数,但出现上述错误
data['Bare Nuclei'] = data['Bare Nuclei'].replace('?',np.nan)
#data['Bare Nuclei'].fillna()
data.apply(lambda x: x.fillna(x.mean()),axis=0)
要检查数据,请访问此链接 https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/
您得到的错误是因为'Bare Nuclei'
列中存储的值存储为字符串,但mean()
函数需要数字。您可以在调用 .unique()
的结果中看到它们是字符串。
替换'?'
字符后,您可以使用.astype(float)
将系列转换为数字:
data['Bare Nuclei'] = data['Bare Nuclei'].replace('?',np.nan)
data['Bare Nuclei'] = data['Bare Nuclei'].astype(float).apply(lambda x: x.fillna(x.mean()))
我是一名优秀的程序员,十分优秀!