У вас две большие проблемы.
(1) Ваша программа не просматривает все данные, потому что у вас нет цикла. Вы работаете со столбцами фреймов данных в целом, а затем волшебным образом ожидаете, что они будут каким-то волшебным образом вести себя как скалярные значения.
Я предлагаю вам внимательно изучить руководства по фреймам данных. print
ваши результаты после каждого утверждения, чтобы убедиться, что вы получаете то, что ожидаете.
(2) Вам пока не знакомы с логическими операциями.
Непосредственная проблема в вашем утверждении:
if (conditionA and conditionB and conditionC) == True:
print(True)
else:
print(False)
Три операнда condition
являются функциональными объектами. Вы никогда не вызываете функции, поэтому практически ни один из предыдущих кодов никогда не выполняется. Этот оператор проверяет, определены ли все три объекта (т.е. не None
). Поскольку вы правильно определили все три функции, это True
, что дает вам одну строку вывода. Это не имеет никакого отношения к вашему фрейму данных.
Вызов функций не решит проблему, поскольку все три функции возвращают значение по умолчанию None
, и в результате вы получите вывод False
,Проработайте ваши материалы снова;вам нужно return
значения, а не print
их.
Прямой способ получить вывод в вашей основной программе будет что-то вроде
print( conditionA(df, change) and
conditionB(df, change) and
conditionC(df, change) )
Этокак я могу сказать, что вы не знакомы с логическими значениями.
if condition == True:
является избыточным;if
автоматически проверяет значение истинности.
if expr:
print(True)
else:
print(False)
также является избыточным. Просто print(expr)
, как с любой другой переменной.