You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用columns.fillna填充DataFrame两列空值时报columns未定义如何解决

修复方案

下面是直接可运行的修正代码:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 读取原始数据
data = pd.read_csv(r'brain_diseases.csv', index_col='id')

# 先把两列里的空白字符串、纯空格内容替换为NaN,方便统一填充
data[['cancer','prions']] = data[['cancer','prions']].replace(r'^\s*$', pd.NA, regex=True)

# 分别用两列各自的均值填充缺失值
data['cancer'] = data['cancer'].fillna(data['cancer'].mean())
data['prions'] = data['prions'].fillna(data['prions'].mean())

# 聚类操作直接用处理完的data
kpoints = KMeans(n_clusters=3, init='random').fit(data)
center = kpoints.cluster_centers_
print(center)

# 绘图逻辑不变
plt.scatter(data['trestbps'], data['chol'], c=kpoints.labels_.astype(float), s=50, alpha=0.5)
plt.scatter(center[:, 0], center[:, 1], c='black', s=50)
plt.show()

原代码的问题点

  • columns不是你定义过的变量,pandas的填充方法需要绑定具体的DataFrame或者列对象调用,正确格式为df[列名].fillna(填充值)
  • 你之前单独把两列存到了df里,但后续聚类用的还是未处理的原始data,填充操作完全没生效
  • 存在拼写错误:列名是prions,填充时误写为pryons,会触发变量未定义报错
  • 空白空格不会被fillna默认识别为缺失值,需要先转成NaN再统一填充

内容的提问来源于stack exchange,提问作者Psiberian_Mushky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:24:04