Я работаю с таким фреймом данных:
group period
A 20130101
A 20130201
. .
E 20130901
E 20131001
Допустим, у меня есть 100 различных групп и 10 возможных дат, которые распределены следующим образом: [.1,.05,.2,.05,.1,.1,.2,.05,.05,.1]
. Мне нужно получить один образец для каждой группы, поэтому 10% окончательного образца получают из первого периода, 5% из второго периода, 20% из третьего периода и так далее. Мне удалось получить случайную выборку для каждой группы, но она сильно искажена, например:
fn = lambda obj: obj.loc[np.random.choice(obj.index, 1, replace=False),:]
dfrd = df[['group','period']].groupby('group', as_index=False).apply(fn)
dfrd.index = [index[1] for index in dfrd.index]
Итак, есть ли способ сделать что-то похожее, но стратифицированное? Спасибо