Как я могу удалить проблему 'Float объект не повторяется' в цикле while - PullRequest
0 голосов
/ 27 июня 2019

Я не использую какой-либо объект с плавающей точкой в ​​своем коде, но он показывает объект с плавающей точкой, не повторяемый в качестве предупреждения. Набор данных - набор данных Титаник из Kaggle.

Я попытался изменить имя переменной на случай, если я мог бы использовать его где-то еще, но безрезультатно. (т. е. от х до текущей переменной у). Я также импортировал библиотеку NumPy. Также я попытался использовать фрагмент кода из цикла while, давая некоторое значение i (скажем, 1), и оно работало идеально.

i= 0
while i <= 890:
    if (dataset.loc[i , 'Cabin'] != np.NaN):
    y = list(dataset.loc[i , 'Cabin'])
    dataset.loc[i , 'Cabin'] = y[0]
i= i+1

Столбец кабины набора данных имеет буквенно-цифровые значения, такие как «C123». Я просто хотел «C» или первую букву буквенно-цифрового значения. Именно поэтому я изменил его в список и взял первый элемент массива. Но я получаю ..

TypeError                                 Traceback (most recent call
 last)
<ipython-input-70-3eeda9c4954a> in <module>
  2 while i <= 890:
  3     if (dataset.loc[i , 'Cabin'] != np.NaN):
----> 4         y = list(dataset.loc[i , 'Cabin'])
  5         dataset.loc[i , 'Cabin'] = y[0]
  6     i= i+1

TypeError: 'float' object is not iterable

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Проблема в том, что dataset.loc[i , 'Cabin'] возвращает число с плавающей запятой, и вы вызываете list. list Для вызова требуется, чтобы его аргумент был итеративным, но он получает число с плавающей запятой, поэтому возникает ошибка.

Очевидное решение - обернуть число с плавающей точкой в ​​list литерал:

y = [dataset.loc[i , 'Cabin']]

Но зачем беспокоиться о преобразовании его в список, когда вы получаете первое индексированное значение в следующей строке, чтобы вы могли просто установить его как y = dataset.loc[i , 'Cabin'].

N.B .: Могут быть и другие лучшие решения вашей реальной проблемы , если я знаю ваш вариант использования.

0 голосов
/ 27 июня 2019

проблема в том, что dataset.loc[i , 'Cabin'] на самом деле является плавающим объектом, который нельзя превратить в список, как вы хотите ... посмотрите на этот пример:

>>> a = 1.0
>>> b = list(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'float' object is not iterable

это, по сути, то, что вы делаете

попробуйте обернуть dataset.loc[i , 'Cabin'] с [] как показано ниже:

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