Попытка сделать ниже. Я пытаюсь использовать simpleimputer ниже, чтобы заменить медианное значение для числовых столбцов и наиболее частое значение для строковых столбцов за один шаг.
Даже когда я использую copy = False, simpleImputer, похоже, не выполняет преобразование данных во фрейме данных. Итак, я должен был назначить данные обратно на тот же кадр данных. Однако при вызове fit_transform необходимо преобразовать его в dataframe. Я имел успех в этом, когда dtypes не предоставлены. Но это означает, что все результирующие столбцы становятся типа «объект». Когда я предоставляю список dtype, используя приведенную ниже инструкцию, я сталкиваюсь с ошибкой ниже.
imp = SimpleImputer(strategy="most_frequent",copy=False)
train_X = pd.DataFrame(data=imp.fit_transform(train_X),columns=train_X.columns,dtype=train_X.dtypes)
Получение ошибки ниже:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Ниже приведена трассировка полного стека
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-9-7463949bd70b> in <module>()
1 imp = SimpleImputer(strategy="most_frequent",copy=False)
2 #print(train_X.columns)
----> 3 train_X = pd.DataFrame(data=imp.fit_transform(train_X),columns=train_X.columns,dtype=train_X.dtypes)
4 #imp.fit_transform(train_X)
5 '''train_X['FireplaceQu'].fillna(train_X['FireplaceQu'].value_counts().index[0])
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
337 data = {}
338 if dtype is not None:
--> 339 dtype = self._validate_dtype(dtype)
340
341 if isinstance(data, DataFrame):
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in _validate_dtype(self, dtype)
166
167 if dtype is not None:
--> 168 dtype = pandas_dtype(dtype)
169
170 # a compound dtype
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\dtypes\common.py in pandas_dtype(dtype)
2020 # which we safeguard against by catching them earlier and returning
2021 # np.dtype(valid_dtype) before this condition is evaluated.
-> 2022 if dtype in [object, np.object_, 'object', 'O']:
2023 return npdtype
2024 elif npdtype.kind == 'O':
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1574 raise ValueError("The truth value of a {0} is ambiguous. "
1575 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1576 .format(self.__class__.__name__))
1577
1578 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().