df - это кадр данных, содержащий 12 миллионов + несортированных строк.
Каждая строка имеет идентификатор группы.
Конечная цель состоит в том, чтобы случайным образом выбрать 1 строку для каждого уникального идентификатора группы, таким образом заполняя новый столбец с именем SELECTED, где 1 означает выбранное 0 означает противоположное
Может быть более 5000 уникальных идентификаторов группы.
Ищете лучшее и более быстрое решение, чем следующее, Потенциально многопоточное решение?
for sec in df['GROUP'].unique():
sz = df.loc[df.GROUP == sec, ['SELECTED']].size
sel = [0]*sz
sel[random.randint(0,sz-1)] = 1
df.loc[df.GROUP == sec, ['SELECTED']] = sel