下面是我的数据名望,它按视频ID时间戳排序(为简单起见,删除了时间戳列)
cameraId video
0 5B740319D 1508152851.mp4
1 5B740319D 1508152851.mp4
2 5B740319D 1508244253.mp4
3 5B740319D 1532963014.mp4
4 8B1602B07 1502607932.mp4
每个cameraId都有4-100个视频。我需要为均匀间隔的每个cameraId选择4个视频。例如如果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
通常不均匀分布,这就是我被卡住的地方。
每个cameraId的输出应为4行
答案 0 :(得分:1)
如果您始终只想要那两个百分位数,一种快速的方法是设置一些小的函数,您可以在这些函数上进行汇总:
getElementById
您还可以删除额外的索引级别,或者稍后根据需要重新使用它们。