Búsqueda de pandas basada en valor

Tengo el siguiente DataFrame:

Date best abcd 1990 a 5 4 7 2 1991 c 10 1 2 0 1992 d 2 1 4 12 1993 a 5 8 11 6 

Me gustaría hacer un dataframe de la siguiente manera:

 Date best value 1990 a 5 1991 c 2 1992 d 12 1993 a 5 

Así que busco encontrar un valor basado en otro valor de fila usando nombres de columna. Por ejemplo, el valor para 1990 en la segunda df debe buscar “a” desde la primera df y la segunda fila debe buscar “c” (= 2) desde la primera df.

¿Algunas ideas?

Hay una función de lookup integrada que puede manejar este tipo de situación (busca por fila / columna). No sé qué tan optimizado está, pero puede ser más rápido que la solución de aplicación.

 In [9]: df['value'] = df.lookup(df.index, df['best']) In [10]: df Out[10]: Date best abcd value 0 1990 a 5 4 7 2 5 1 1991 c 10 1 2 0 2 2 1992 d 2 1 4 12 12 3 1993 a 5 8 11 6 5 

Si creas una función de búsqueda y apply llamada en tu dataframe por filas, esto no es muy eficiente para grandes dfs

 In [245]: def lookup(x): return x[x.best] df['value'] = df.apply(lambda row: lookup(row), axis=1) df Out[245]: Date best abcd value 0 1990 a 5 4 7 2 5 1 1991 c 10 1 2 0 2 2 1992 d 2 1 4 12 12 3 1993 a 5 8 11 6 5