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

Respuestas a la pregunta(1)

Su respuesta a la pregunta