Skip to main content
 首页 » 编程设计

python之在 Dataframe 中的某些列上输入

2025年05月04日11bjzhanghao

我正在尝试在名为 age 的单一列上使用 Imputer 来替换缺失值。但我得到的错误是“预期的二维数组,而不是一维数组:”

以下是我的代码

import pandas as pd 
import numpy as np 
from sklearn.preprocessing import Imputer 
 
dataset = pd.read_csv("titanic_train.csv") 
 
dataset.drop('Cabin',axis = 1,inplace = True) 
x = dataset.drop('Survived',axis = 1) 
y = dataset['Survived'] 
 
imputer = Imputer(missing_values ="nan",strategy = "mean",axis = 1) 
imputer=imputer.fit(x['Age']) 
x['Age']=imputer.transform(x['Age']) 

请您参考如下方法:

Imputer 期望一个二维数组作为输入,即使其中一个维度的长度为 1。这可以使用 np.reshape 来实现。 :

imputer = Imputer(missing_values='NaN', strategy='mean') 
imputer.fit(x['Age'].values.reshape(-1, 1)) 
x['Age'] = imputer.transform(x['Age'].values.reshape(-1, 1)) 

就是说,如果您不做比用平均值填充缺失值更复杂的事情,您可能会发现完全跳过 Imputer 并只使用 Pandas fillna 会更容易。相反:

x['Age'].fillna(x['Age'].mean(), inplace=True)