Перемещение значений строк между столбцами на основе других значений столбцов в Pandas DataFrame
У меня есть набор данных панд со списком названий организмов и их чувствительностью к антибиотикам. Я хочу объединить все организмы в один столбец в приведенной ниже таблице данных на основе следующих правил.
Если ORG1 == A, ничего не делать;
Если ORG1! = A и ORG2 == A, переместите значения ORG2 в столбец ORG1
Если ORG1! = A и ORG3 == A, переместите значения ORG3 в столбец ORG1
Если выполняется условие 2, а также перемещать значение ORG2 в столбец ORG1, также перемещайте значения столбца в AS20 * в AS10 *.
Точно так же, если выполняется условие 3, а также перемещение значения ORG3 в столбец ORG1, также перемещайте значения столбца в AS30 * в AS10 *.
Я сам попробовал это, написав функцию, основанную на приведенных выше правилах, и имел ограниченный успех, основанный на следующем:
If ORG2 == A:
return ORG1.map(ORG2)
Я заблудился, когда попытался последовательно отобразить AS201 -> AS101, AS202 -> AS102, AS203 -> AS103 и т. Д. В зависимости от состояния.
Другая проблема, с которой я столкнулся, заключается в том, что имена организмов - это не отдельные буквы, а красивые. А в примере эквивалентноre.match('aureus')
в моем наборе данных.
Кроме того, есть 20 столбцов AS для каждого столбца ORG и более 150 000 записей, поэтому я надеюсь сделать его обобщенным для любого числа результатов чувствительности к антибиотикам.
Я немного борюсь с этим, так что пара толчков в правильном направлении действительно поможет.
Заранее спасибо.
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