Ниже мои данные отсортированы по метке времени с идентификатором видео (столбец метки времени был удален для простоты)
cameraId video
0 5B740319D 1508152851.mp4
1 5B740319D 1508152851.mp4
2 5B740319D 1508244253.mp4
3 5B740319D 1532963014.mp4
4 8B1602B07 1502607932.mp4
Каждый идентификатор камеры имеет 4-100 видео. Мне нужно выбрать 4 видео для каждой камеры. Ex. если у CameraId есть 100 видео, я должен выбрать видео [0, 33, 66, 99]
Это мой подход, выберите первое и последнее видео, а затем случайную выборку середины 2.
first_video = df.drop_duplicates(['cameraId'], keep='first')
last_video = df.drop_duplicates(['cameraId'], keep='last')
middle_videos = df.groupby(['cameraId']).apply(lambda x: x.sample(2, random_state=seed)).reset_index(drop=True)
df = pd.concat([first_video, middle_videos, last_video])
middle_videos
обычно не распределяется равномерно, и вот где я застрял.
Вывод должен составлять 4 строки для каждой камерыId