Получите имя столбца из столбца A, а затем сохраните значение этого столбца в новом столбце C - PullRequest
0 голосов
/ 31 августа 2018

У меня есть 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

Как мне создать этот новый столбец?

1 Ответ

0 голосов
/ 31 августа 2018

Можно выбрать значения из столбца, используя значения другого столбца с lookup:

df['best_prediction'] = df.lookup(df.index, df['pred_algorithm'])

Результирующий кадр данных:

p1  p1_conf p2   p2_conf p3   p3_conf max_conf pred_algorithm best_prediction
0   dog     0.45 cat     0.32 book    0.05     0.45 p1        dog
1   dog     0.01 book    0.90 table   0.50     0.90 p2        book
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...