Из своего набора данных я пытаюсь составить пары на основе рейтинга. мои данные выглядят так
ID grp rank
1 grp1 1
1 grp2 1
1 grp3 2
2 grp1 1
2 grp2 2
2 grp2 2
2 grp2 2
2 grp3 2
2 grp1 3
Результат, к которому я стремлюсь, следующий: для каждого идентификатора
- если rank = 1, то grp в источнике и получателе одинаковы = grp
- If rank is different from 1 then
- source = take grp from previous rank
- назначение = взять группу из текущего рейтинга. Если для одного и того же рейтинга существует более одной группы, необходимо создать дополнительную строку, чтобы каждая пара была представлена.
Это выглядит следующим образом
ID rank source destination
1 1 grp1 grp1
1 1 grp2 grp2
1 2 grp1 grp3
1 2 grp2 grp3
2 1 grp1 grp1
2 2 grp1 grp2
2 2 grp1 grp2
2 2 grp1 grp2
2 2 grp1 grp3
2 3 grp2 grp1
2 3 grp3 grp1
Я начал с цикла for и операторов if_else, но застрял. Любая помощь приветствуется! Спасибо заранее.