如何基于其他现有列的条件添加具有值的新列?

时间:2018-11-05 22:56:12

标签: python pandas numpy

这是当前的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 :(得分:1)

有几种方法。一种是使用字典来存储您的治疗和状况:

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。由于布尔序列支持向量化操作,因此这将大大提高效率。