Есть ли способ вложить оператор «if» в цикл «for», чтобы затем вернуть «True», «False» или «Unsure» в новый список? - PullRequest
0 голосов
/ 25 октября 2019

У меня в настоящее время есть столбец Series («DateDiff») в DataFrame, и я пытаюсь создать новый список / серию рядом с ним, который возвращает «True», «False» или «Unsure» на основе значенийв столбце «DateDiff».

Я пытался создать вложенную функцию if внутри цикла for, а затем добавить эти возвращаемые значения в новый список с именем «fraud».

minus = condensed['DEATHDATE'] - condensed['STOP']
minus = minus.tolist()
fraud = []
for value in minus:
    if value in minus > 0:
        fraud.append('True')
    elif value in minus < 0:
        fraud.append('False')
    elif value in minus == 0:
        fraud.append('Unsure')

Я ожидаю, что этопропустите каждую строку [минус], проверьте, является ли она>, <или == до 0, а затем вернитесь и добавьте «True», «False» или «Unsure» в список [list]. </p>

Всякий раз, когда я пытаюсь запустить приведенный выше код, я получаю это сообщение об ошибке.

TypeError: '>' не поддерживается между экземплярами 'list' и 'int'

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Поскольку вы уже просматриваете список, вы должны использовать переменную value для ссылки на текущий элемент в итерации. Следовательно, ваш оператор if должен выглядеть следующим образом:

if value > 0:

То же самое для остальных. По сути, вам нужно удалить in minus в каждой строке, в противном случае он сравнивает весь список minus с числом 0, а это не то, что вам нужно.

0 голосов
/ 25 октября 2019

При использовании цикла for вам не нужно произносить if value in minus > 0. Минус - это список, и вы не можете сравнивать списки с целыми числами. Вместо этого все, что вам нужно, это if value > 0, поскольку он уже находится внутри цикла for. Ваш код должен выглядеть следующим образом:

minus = condensed['DEATHDATE'] - condensed['STOP']
minus = minus.tolist()
fraud = []
for value in minus:
    if value > 0:
        fraud.append('True')
    elif value < 0:
        fraud.append('False')
    elif value == 0:
        fraud.append('Unsure')

Простое недоразумение в цикле for. Удачного кодирования!

...