熊猫:分组并选择行距均匀的行

时间:2019-10-01 14:01:05

标签: python pandas

下面是我的数据名望,它按视频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行

1 个答案:

答案 0 :(得分:1)

如果您始终只想要那两个百分位数,一种快速的方法是设置一些小的函数,您可以在这些函数上进行汇总:

getElementById

您还可以删除额外的索引级别,或者稍后根据需要重新使用它们。