Присваивание значения группе groupby pandas
Есть дата фрейм вида:
df = pd.DataFrame({'ID': [111, 222, 333, 333, 444, 555, 555], 'Номер': ['1', '2','3', '4', '5', '6', '7']})
Требуется присвоить случайный номер между 1 и 3 всем ID, но с условием - если ID одинаковый, им присваивается одинаковый номер.
Основная цель - сгруппировать все ID под определенный набор групп, причем, одинаковые ID должны быть под одним номером, а количество групп генерируется случайным образом в диапазоне между заданными числами. Разные группы могут быть под одним номером.
Пробовал через группировку - не сработало:
for group in df['Номер'].groupby(df['ID']):
df['Номер'] = np.random.randint(1, 4, size=len(df))
Каким образом поместить одинаковые ID под один номер, который генерируется случайным образом?