Как добавить новый столбец со значениями на основе условий других существующих столбцов? - PullRequest
0 голосов
/ 06 ноября 2018

Это текущие df_treatments.

enter image description here

Я хочу добавить новое поле «treatment_type» со значениями, которые должны основываться на значениях в столбцах (метформин, глипизид, инсулин):

("значение параметра обработки_": (значение метформина, значение глипизида, значение инсулина))

"No Treatment" (NO, NO, NO)
"Metformin" (YES, NO, NO)
"Glipizide" (NO, YES, NO)
"Insulin" (NO, NO, YES)
"Metformin-Glipizide" (YES, YES, NO)
"Metformin-Insulin" (YES, NO, YES)
"Glipizide-Insulin" (NO, YES, YES)
"Metformin-Glipizide-Insulin" (YES, YES, YES)

Как я могу это сделать?

Спасибо,

1 Ответ

0 голосов
/ 06 ноября 2018

Есть несколько подходов. Одним из них является использование словаря для хранения ваших процедур и условий:

d = {"No Treatment": ('NO', 'NO', 'NO'),
     "Metformin": ('YES', 'NO', 'NO')
     "Glipizide": ('NO', 'YES', 'NO'),
     ...}

Затем повторите свой словарь и обновите серию:

arr = df[['metformin', 'glipizide', 'insulin']].values

for treatment, flags in d.items():
    df.loc[(arr == flags).all(1), 'treatment_type'] = treatment

Единственное улучшение, которое я предлагаю, - преобразовать все значения 'NO' / 'YES' в логические False / True. Это будет значительно эффективнее, поскольку логические ряды поддерживают векторизованные операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...