Рассмотрим фрейм данных:
data = [['G1','P1',0.3], ['G1','P2',0.3], ['G1','P3',0.3],['G2','P1',0.3],['G2','P2',0.3],['G3','P2',0.3]]
df2 = pd.DataFrame(data, columns = ['GT', 'PRED','ACC'])
df2 выглядит следующим образом:
GT PRED ACC
0 G1 P1 0.3
1 G1 P2 0.3
2 G1 P3 0.3
3 G2 P1 0.3
4 G2 P2 0.3
5 G3 P2 0.3
Цель состоит в том, чтобы выбрать случайные строки, чтобы значения в GT и PRED выбирались однозначно. Из других поисков переполнения стека у меня есть следующий код:
size = 1 # sample size
replace = False # with replacement
fn = lambda obj: obj.loc[np.random.choice(obj.index, size, replace),:]
pt = df2.groupby('PRED', as_index=False).apply(fn)
, чей вывод
GT PRED ACC
0 G1 P1 0.3
1 G1 P2 0.3
2 G1 P3 0.3
Мой ожидаемый вывод должен быть
GT PRED ACC
0 G1 P3 0.3
1 G2 P1 0.3
2 G3 P2 0.3
То есть ввремя фильтрации мы гарантируем, что GT и PRED уникальны. Я могу убедиться в этом, применив функцию после генерации df в цикле for. Я хотел избежать этого.