我有一个包含数字和非数字列的数据框。 我只想编码非数字列,并保持数字列的值不变。 当我尝试使用自己的代码进行编码时,它将对所有列进行编码。
您能帮助解决这个问题吗?
谢谢
这是我的python代码
from sklearn.base import BaseEstimator
from sklearn.base import TransformerMixin
from sklearn.preprocessing import LabelEncoder
class CustomImputer(BaseEstimator, TransformerMixin):
def __init__(self, strategy='mode',filler='NA'):
self.strategy = strategy
self.fill = filler
def fit(self, X, y=None):
if self.strategy in ['mean','median']:
if not all(X.dtypes == np.number):
raise ValueError('dtypes mismatch np.number dtype is \
required for '+ self.strategy)
if self.strategy == 'mean':
self.fill = X.mean()
elif self.strategy == 'median':
self.fill = X.median()
elif self.strategy == 'mode':
self.fill = X.mode().iloc[0]
elif self.strategy == 'fill':
if type(self.fill) is list and type(X) is pd.DataFrame:
self.fill = dict([(cname, v) for cname,v in zip(X.columns, self.fill)])
return self
def transform(self, X, y=None):
return X.fillna(self.fill)
data3=CustomImputer(strategy='mode').fit_transform(data2)
答案 0 :(得分:0)
您正在寻找X.select_dtypes(np.number)
。