Попытка преобразовать nparray в dataframe с помощью панд - при ударе об ошибке - значение истинности Серии неоднозначно - PullRequest
0 голосов
/ 11 ноября 2018

Попытка сделать ниже. Я пытаюсь использовать 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().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...