TypeError: isnull () принимает 1 позиционный аргумент, но 2 - PullRequest
0 голосов
/ 09 ноября 2018
y = df.var3
X_train, X_test, y_train, y_test = train_test_split(X, y)
tmp = pd.to_numeric(y_train, errors='coerce')

Запуск

mask = df.isnull(tmp)

Приведено в

TypeError: isnull () принимает 1 позиционный аргумент, но 2 даны

Глядя на форму ТМП:

>>> tmp.shape
(12731,)

Кажется, только 1 столбец.

При просмотре данных в tmp я обнаружил, что там 2 столбца - у первого были индексы (в беспорядочном порядке), а у второго - действительные значения. Я думал, что tmp имеет 2 столбца, но кажется, что у любого объекта типа серии всегда есть индексный столбец. Кроме того, форма также указывает только 1 столбец.

Нарезка ряда (с использованием iloc) также не сработала из-за "Слишком много индексаторов".

Я пытаюсь найти ошибку там, где ее нет?

1 Ответ

0 голосов
/ 09 ноября 2018

Это не имеет никакого отношения к количеству столбцов tmp.

Метод DataFrame.isnull() просто не принимает аргументы . Это метод в фрейме данных, поэтому Python передает фрейм данных в качестве первого self аргумента, а вы передаете второй, tmp.

Вы утверждаете, что tmp - это объект Pandas Series (pandas.to_numeric() также мог бы создать массив numpy, и вы не указали, что возвращает train_test_split()). Если это так, то просто позвоните:

mask = tmp.isnull()

потому что есть Series.isnull() метод , как и DataFrame.isnull().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...