Mover valores de fila entre columnas en función de otros valores de columna en un DataFrame de Pandas
Tengo un marco de datos de pandas con una lista de nombres de organismos y sus sensibilidades a los antibióticos. Deseo consolidar todos los organismos en una columna, en el siguiente marco de datos, en base a las siguientes reglas.
Si ORG1 == A, no haga nada;
Si ORG1! = A y ORG2 == A, mueva los valores ORG2 a la columna ORG1
Si ORG1! = A y ORG3 == A, mueva los valores ORG3 a la columna ORG1
Si se cumple la condición 2, además de mover el valor ORG2 a la columna ORG1, también mueva los valores de la columna en AS20 * a AS10 *.
De manera similar, si se cumple la condición 3, además de mover el valor ORG3 a la columna ORG1, también mueva los valores de la columna en AS30 * a AS10 *.
Lo intenté yo mismo escribiendo una función basada en las reglas anteriores y tuve un éxito limitado basado en lo siguiente:
If ORG2 == A:
return ORG1.map(ORG2)
Me perdí cuando intenté mapear secuencialmente AS201 -> AS101, AS202 -> AS102, AS203 -> AS103 etc. según la condición.
El otro problema que tengo es que los nombres de los organismos no son letras individuales, ni son bonitas. A en el ejemplo es equivalente are.match('aureus')
en mi conjunto de datos
Además, hay 20 columnas AS para cada columna ORG y más de 150,000 registros, así que espero poder generalizarlos para cualquier número de resultados de sensibilidad a los antibióticos.
Estoy luchando un poco con él, así que un par de empujones en la dirección correcta realmente ayudaría.
Gracias por adelantado.
Index ORG1 ORG2 ORG3 AB1 AS101 AS201 AS301 AB2 AS102 AS202 AS302 1 A NaN NaN pen S NaN NaN dfluc S NaN NaN 2 A B C pen R S S dfluc S R S 3 B A B pen S S R dfluc S S R 4 A NaN NaN pen R NaN NaN dfluc S NaN NaN 5 A NaN NaN pen R NaN NaN dfluc S NaN NaN 6 C A A pen S R R dfluc R S R 7 B NaN A pen R NaN S dfluc S NaN S 8 A B A pen R R R dfluc R R R 9 A NaN NaN pen R NaN NaN dfluc S NaN NaN