Используйте groupby
и head
:
df = df.groupby('Label').head(50)
Это займет первые 50 из каждого подмножества строк, где метка равна 0 и 1 соответственно.В случае строк с меткой 1 выбираются первые 50, а остальные отбрасываются.
Чтобы выбрать последние 50, замените head(50)
на tail(50)
.
Чтобы выбрать 50 случайных строк, используйте apply
+ sample
:
df = (df.groupby('Label', as_index=False)
.apply(lambda x: x.sample(n=50))
.reset_index(drop=True))
Обратите внимание, что если в какой-либо из групп будет меньше N (= 50) элементов, это не будет работать.