Подсчет, используя если внутри цикла - PullRequest
0 голосов
/ 21 ноября 2018

Я использую этот репозиторий:

https://github.com/fivethirtyeight/data/blob/master/avengers/avengers.csv

Для упражнения в DataQuest мне нужно посчитать правильное число лет с момента присоединения, вычитая 2015 (ссылкаyear) из столбца 'Year'.

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

def Years_joined():    
    joined_accuracy_count = 0

    for row in avengers['Years since joining']:
        if (2015 - avengers['Year']) == avengers['Years since joining']:
            joined_accuracy_count += 1
    return joined_accuracy_count

РЕДАКТИРОВАТЬ: Извините, что не дал больше информации.Файл в пандах.Итак, pd.read_csv ('avengers')

У меня есть два столбца.«Год» и «Годы с момента присоединения».Например, Годом будет 1963 год. С момента присоединения будет 52 года. Я пытаюсь написать цикл for-if, чтобы увидеть, будет ли 2015 - 1963 год = 52. И если это так, добавьте это к счету.

Ошибка: Истинное значение Серии неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

1 Ответ

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

Я думаю, что вы хотите использовать avengers.iterrows ().
По сути, вы работаете со значениями определенного столбца, но это не «строка» в том смысле, в каком вы хотите, и у вас нет доступатаким образом, к другим столбцам.
Попробуйте -

for _, row in avengers.iterrows():
    if (2015 - row['Year']) == row['Years since joining']:
        joined_accuracy_count += 1
return joined_accuracy_count

PS: Это только ответ на вашу ошибку.Если есть другие проблемы с тем, что ты пытаешься сделать и как ты это делаешь, это другая история.

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