Не знаю, зачем этого делать, потому что все группы взаимозаменяемы, но если вам это действительно нужно, вот способ:
import numpy as np
import pandas as pd
groups = np.array([1, 2, 2, 2, 4, 4, 5, 5, 0, 0, 0, 3, 3, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 1, 2, 2, 4, 5, 0, 3, 2, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 5, 3])
Сначала получите порядок появления значений в группах: появляется 1 сначала, затем 2, затем 4 et c
groups_in_order = pd.unique(groups)
# array([1, 2, 4, 5, 0, 3])
Заказать этот новый массив: 0 появляется в индексе 4, 1 в индексе 0 et c
right_order = np.argsort(groups_in_order)
# array([4, 0, 1, 5, 2, 3])
Наконец, измените порядок group
с использованием right_order
и пониманием списка
[ right_order[i] for i in groups]
#[0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5,
# 5, 1, 1, 1, 1, 2, 3, 4, 5, 1, 1, 1,
# 1, 1, 1, 1, 2, 3, 4, 5, 1, 1, 1, 0,
# 1, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2,
# 3, 4, 5, 1, 1, 1, 3, 5]