Вынос переменных/фильтров в отдельный файл в python

В основном файле перебираю файлы с данными и для каждого создаю dataframe dfmin. Далее произвожу фильтрацию по условию и вывожу результат. Проблема в том, что фильтров много и условия у них большие. Пример фильтра:

Filter_1 = (dfmin.iloc[-1, 3] > dfmin.iloc[-2, 3] and 
            dfmin.iloc[-1, 5] > dfmin.iloc[-2, 2] and 
            dfmin.iloc[-2, 3] > dfmin.iloc[-3, 3] and 
            dfmin.iloc[-2, 5] > dfmin.iloc[-3, 2] and 
            dfmin.iloc[-3, 3] > dfmin.iloc[-4, 3] and 
            dfmin.iloc[-3, 5] > dfmin.iloc[-4, 2] and 
            dfmin.iloc[-4, 3] > dfmin.iloc[-5, 3] and 
            dfmin.iloc[-4, 5] > dfmin.iloc[-5, 2] and 
            dfmin.iloc[-5, 5] >= dfmin.iloc[-6, 5])

Поэтому хочу вывести все фильтры в качестве переменных в отдельный файл filters.py и потом только импортировать их в основной. Но загвоздка в том, что в файле filters.py dfmin не определен. Каким образом можно вывести фильтры в отдельный файл и импортировать их в качестве переменных?


Ответы (1 шт):

Автор решения: insolor

Можно сделать функцию, которая возвращает фильтр:

def filter_1(df):
    return (df.iloc[-1, 3] > df.iloc[-2, 3] and 
            df.iloc[-1, 5] > df.iloc[-2, 2] and 
            df.iloc[-2, 3] > df.iloc[-3, 3] and 
            df.iloc[-2, 5] > df.iloc[-3, 2] and 
            df.iloc[-3, 3] > df.iloc[-4, 3] and 
            df.iloc[-3, 5] > df.iloc[-4, 2] and 
            df.iloc[-4, 3] > df.iloc[-5, 3] and 
            df.iloc[-4, 5] > df.iloc[-5, 2] and 
            df.iloc[-5, 5] >= df.iloc[-6, 5])

В месте где нужен фильтр:

from filters import filter_1

...

Filter_1 = filter_1(dfmin)
→ Ссылка