У меня есть pandas dataframe, который выглядит следующим образом: (он основан на анализе изображений и использует 3 различных алгоритма с их уровнем достоверности, чтобы угадать, каким было изображение)
p1 p1_conf p2 p2_conf p3 p3_conf
dog 0.45 cat 0.32 book 0.05
dog 0.01 book 0.9 table 0.5
...
Конечная цель состоит в том, чтобы найти лучший прогноз (тот, который имеет самый высокий уровень достоверности): то есть собака для 1-го ряда и книга для 2-го ряда.
Я использовал следующий код, чтобы найти максимальный уровень достоверности и имя столбца с максимальным уровнем достоверности:
df['max_conf'] = df[['p1_conf', 'p2_conf', 'p3_conf']].max(axis=1)
df['max_col'] = df[['p1_conf', 'p2_conf', 'p3_conf']].idxmax(axis=1)
df['pred_algorithm'] = df['max_col'].apply(lambda x: x.split('_')[0])
теперь мой фрейм данных выглядит примерно так:
p1 p1_conf p2 p2_conf p3 p3_conf max_conf pred_algorithm
dog 0.45 cat 0.32 book 0.05 0.45 p1
dog 0.01 book 0.9 table 0.5 0.9 p2
...
Теперь мне нужно найти лучший прогноз для каждой строки, используя столбец pred_algorithm.
Я пробовал это:
df['best_prediction'] = df[df['pred_algorithm']]
и я получаю следующую ошибку:
ValueError: Wrong number of items passed 1691, placement implies 1
Как мне создать этот новый столбец?