这是当前的df_treatments。
我想添加一个新字段“ 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)
我该怎么做?
谢谢
答案 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
。由于布尔序列支持向量化操作,因此这将大大提高效率。