У меня есть pandas кадр данных, подобный следующему:
index Validation_Set Topics Alpha Beta Coherence
0 75% Corpus 14 0.5 0.5 0.501483
1 75% Corpus 14 0.5 symmetric 0.481676
2 100% Corpus 14 asymmetric 0.5 0.500620
3 100% Corpus 14 0.5 symmetric 0.492288
4 75% Corpus 12 0.5 0.5 0.511823
5 75% Corpus 12 0.5 symmetric 0.477614
6 100% Corpus 12 asymmetric 0.5 0.489424
7 100% Corpus 12 0.5 symmetric 0.541270
8 75% Corpus 4 0.5 0.5 0.515683
9 75% Corpus 4 0.5 symmetric 0.430614
10 100% Corpus 4 asymmetric 0.5 0.489324
11 100% Corpus 4 0.5 symmetric 0.473570
И так далее ... это результаты нескольких тестов для настройки параметров.
Теперь я хочу извлечь вся информация (все тесты параметров) только о лучшей модели, которая является той (или, может быть, более одной), которая достигла наибольшего значения 'Coherence' в полном наборе проверки (100% корпус).
В этом примере я получу [ОШИБКА, СМОТРЕТЬ РЕДАКТИРОВАТЬ] :
index Validation_Set Topics Alpha Beta Coherence
7 100% Corpus 12 0.5 symmetric 0.541270
Мне удалось получить строку с наибольшим значением для 'Coherence' таким образом (df это полный фрейм данных):
corpus_100 = df[df['Validation_Set']=='100% Corpus']
topics_num = df.iloc[[corpus_100['Coherence'].idxmax()]]['Topics'].values[0]
opt_model = corpus_100[corpus_100['Topics']==topics_num]
И работает, но это действительно беспорядок, тогда я ищу более понятный способ реализовать это.
Спасибо!
РЕДАКТИРОВАТЬ: Мне очень жаль, но в желаемом выводе была опечатка, которая на самом деле:
4 75% Corpus 12 0.5 0.5 0.511823
5 75% Corpus 12 0.5 symmetric 0.477614
6 100% Corpus 12 asymmetric 0.5 0.489424
7 100% Corpus 12 0.5 symmetric 0.541270