2017-05-22 31 views
5

Przyjrzałem się Sklearn stratified sampling docs, a także pandas docs, a także Stratified samples from Pandas i sklearn stratified sampling based on a column, ale nie rozwiązują tego problemu.Próbkowanie warstwowe w pandach

Poszukuję szybkiego sposobu pandy/sklearn/numpy, aby wygenerować stratyfikowane próbki o rozmiarze n z zestawu danych. Jednak w przypadku wierszy o numerze mniejszym niż określony numer próbki powinien on zawierać wszystkie wpisy.

konkretny przykład:

enter image description here

Dziękujemy! :)

Odpowiedz

13

Podczas przekazywania numeru do próbki należy użyć min. Zastanów się, czy to szkiełko graficzne df

df = pd.DataFrame(dict(
     A=[1, 1, 1, 2, 2, 2, 2, 3, 4, 4], 
     B=range(10) 
    )) 

df.groupby('A', group_keys=False).apply(lambda x: x.sample(min(len(x), 2))) 

    A B 
1 1 1 
2 1 2 
3 2 3 
6 2 6 
7 3 7 
9 4 9 
8 4 8 
+0

To genialne rozwiązanie, dziękuję! :) – Wboy

+0

@Wboy Cieszę się, że Ci się podoba. – piRSquared