Если вы пытаетесь выполнить выборку из набора данных без замены, возможно, имеет смысл сделать все это за один раз, а не итеративно извлекать выборку из набора данных.
Извлечение N выборок из каждого месяца/ день комбо требует, чтобы было достаточно комбинаций, чтобы вытащить N без замены.Но предполагая, что это правда, вы можете написать функцию для выборки N значений из подмножества данных:
def select_n(subset, n=2):
choices = np.random.choice(len(x), size=n, replace=False)
return (
subset
.mnthShape
.iloc[choices]
.reset_index(drop=True)
.rename_axis('choice'))
, чтобы применить это ко всему набору данных:
In [34]: df.groupby(['Month', 'Day']).apply(select_n)
Out[34]:
choice 0 1
Month Day
1 1 1.09 0.96
2 0.96 1.01
3 1.09 1.01
Если выдействительно нужно извлекать их по одному, вам все равно нужно будет генерировать образцы одновременно, чтобы гарантировать, что они будут нарисованы без замены, но вы можете сгенерировать индексы выборки отдельно от подмножества данных:
In [48]: indices = np.random.choice(3, size=2, replace=False)
In [49]: df[((df.Month == 1) & (df.Day == 2))].iloc[indices[0]]
Out[49]:
Month 1.00
Day 2.00
mnthShape 1.01
Name: 3, dtype: float64
In [50]: df[((df.Month == 1) & (df.Day == 2))].iloc[indices[1]]
Out[50]:
Month 1.00
Day 2.00
mnthShape 0.96
Name: 5, dtype: float64