Python Pandas - Выборка: ограничение количества элементов в случайном выборе - PullRequest
2 голосов
/ 29 апреля 2020

Скажите, что у меня есть кадр данных, который выглядит следующим образом:

id_1 id_2
aa    123 
bb    123 
cc    234
dd    123
ee    678
FF    456
gg   123

Как выполнить выборку при условии, что в * 1004 мы можем иметь только до 3 (или любого другого числа) идентичных элементов * id_2 столбец? Мы не обязательно должны иметь 3 или 2 элемента, идентичных для этого столбца (так как это случайная выборка, это должен быть случайный выбор), но если это будет повторяться, это может быть максимум X раз (определяется порог)

Скажите n = 5 и порог 3

id_1 id_2
aa    123  
dd    123
ee    678
FF    456
gg    123

1 Ответ

0 голосов
/ 29 апреля 2020
import pandas as pd
df = pd.read_clipboard()

def get_sample(df, thresh):
    df1 = df.sample(n=5)
    while df1.id_2.value_counts().max() > thresh:
        print(df1.id_2.value_counts().max())
        df1 = df.sample(n=5)
    return df1

df1 = get_sample(df, 3)

print(df1)

    id_1    id_2
3   dd  123
4   ee  678
5   FF  456
6   gg  123
1   bb  123
...