这是当前的df_treatments。

我想添加一个新的字段"treatment_type“,它的值应该基于列中的值(二甲双胍、格列吡嗪、胰岛素):
(“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)我该怎么做?
谢谢,
发布于 2018-11-05 23:04:33
有几种方法。一种是使用字典存储治疗方法和条件:
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。这将大大提高效率,因为布尔级数支持矢量化操作。
https://stackoverflow.com/questions/53163479
复制相似问题