Группировка внутри строки датафрейма

Работаю с Питоном и возникла задача, логику решения которой я не понимаю. Есть датафрейм (строк порядка 500к). Выглядит так:

user_1 | Факультет 1 | Факультет 1 | Факультет 4 | Факультет 4 | Факультет 2 |

user_2 | Факультет 3 | Факультет 1 | Факультет 5 | Факультет 1 | ....

Мне нужно сгруппировать каждую строку так, чтобы можно было проследить путь юзера по факультетам. То есть, в итоге должно быть следующее:

user_1 | Факультет 1 | Факультет 4 | Факультет 2 |

user_2 | Факультет 3 | Факультет 1 | Факультет 5 | Факультет 1 |

В идеале еще и посчитать сколько группировок у каждой цепочки:

user_1 | Факультет 1 | 2 | Факультет 4 | 2 | Факультет 2 | 1 |

user_2 | Факультет 3 | 1 | Факультет 1 | 1 | Факультет 5 | 1 | Факультет 1 | 1 |

Может быть кто-то подскажет, что делать, так как я даже приблизительно пока не понимаю как к этому подойти.

введите сюда описание изображения

п.с. прошу прощения за оформление - первый вопрос, еще не разобрался как это делается.


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

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

Похоже вам нужен один из unique алгоритмов. Например, отсюда https://pypi.org/project/more-itertools/:

from  more_itertools import unique_justseen

items = ['факультет 1', 'факультет 3', 'факультет 4', 'факультет 1', 'факультет 1', 'факультет 8', 'факультет 3']
print(list(unique_justseen(items)))
→ Ссылка