Movendo valores de linha entre colunas com base em outros valores de coluna em um DataFrame do Pandas
Eu tenho um quadro de dados de pandas com uma lista de nomes de organismos e suas sensibilidades antibióticas. Desejo consolidar todos os organismos em uma coluna, no DataFrame abaixo, com base nas regras a seguir.
Se ORG1 == A, não faça nada;
Se ORG1! = A e ORG2 == A, mova os valores de ORG2 para a coluna ORG1
Se ORG1! = A e ORG3 == A, mova os valores ORG3 para a coluna ORG1
Se a condição 2 for atendida, além de mover o valor ORG2 para a coluna ORG1, mova também os valores da coluna em AS20 * para AS10 *.
Da mesma forma, se a condição 3 for atendida, além de mover o valor ORG3 para a coluna ORG1, mova também os valores da coluna em AS30 * para AS10 *.
Eu mesmo tentei escrever uma função com base nas regras acima e tive sucesso limitado com base no seguinte:
If ORG2 == A:
return ORG1.map(ORG2)
Eu me perdi quando tentei mapear sequencialmente AS201 -> AS101, AS202 -> AS102, AS203 -> AS103 etc. com base na condição.
A outra questão que tenho é que os nomes dos organismos não são letras únicas, nem são bonitas. A no exemplo é equivalente are.match('aureus')
no meu conjunto de dados.
Além disso, há 20 colunas AS para cada coluna ORG e mais de 150.000 registros, portanto, espero torná-la generalizável para qualquer número de resultados de sensibilidade a antibióticos.
Eu estou lutando um pouco com isso, então alguns shoves na direção certa realmente ajudariam.
Desde já, obrigado.
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