Алгоритм вычисления лояльности клиента
Требуется рассчитать лояльность клиента в компании. Критерии лояльного клиента:
- Сотрудничает бесперебойно весь период как пришел первый раз (поле год заключения договора);
- Сотрудничает на постоянной основе но мог пропустить 1 год;
- Или новый клиент который заключил договор в текущем году
Есть массив данных выгруженный из БД:

Последнее поле сортировка - это функция row_number которая пронумеровала мне договора у каждого клиента.
Подскажите как можно реализовать данный алгоритм, на sql или Python, может описание просто, ибо не совсем понимаю в части того как обходить все договора у каждого клиента. Интересно было бы посмотреть реализацию на Python, можно с использованием Pandas можно на чистом змее. Есть предположение, что мне нужно делать двойной цикл for, который будет выбирать ID Клиента и второй, который будет проверять его строки. Спасибо.