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

2024-10-03 15:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是目前的df_治疗方法

enter image description here

我想添加一个新字段“治疗类型”,其值应基于列中的值(二甲双胍、格列吡嗪、胰岛素):

(“治疗类型价值”:(二甲双胍价值、格列吡嗪价值、胰岛素价值))

"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)

我该怎么做

谢谢,


Tags: 方法no类型dfyes价值treatmentinsulin
1条回答
网友
1楼 · 发布于 2024-10-03 15:32:58

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

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。这将大大提高效率,因为布尔级数支持向量化操作

相关问题 更多 >