qué:
i tiene un marco de datos
A B C
True False False
False False True
True False False
False False False
Quiero llegar columna denominada "resultado" que devolverá el nombre de la columna si es verdad y Nan, si alguna de que no es cierto.
columna espera
result
A
C
A
na
el original:
Se podría utilizar Series.where
para establecer el valor de la columna ya sea a la idxmax
largo del segundo eje, por lo que el respectivo nombre de la columna de la primera True
, o NaN
, en función del resultado de df.any(1)
:
df['result'] = df.idxmax(1).where(df.any(1))
O para un numpy
uno basado puede utilizar argmax
en su lugar:
import numpy as np
df['result'] = np.where(df.values.any(1), df.columns[df.values.argmax(1)], np.nan)
print(df)
A B C result
0 True False False A
1 False False True C
2 True False False A
3 False False False NaN