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

Python 如何根据其他现有列的条件添加具有值的新列?,python,pandas,numpy,Python,Pandas,Numpy,这是目前的df_治疗方法 我想添加一个新字段“治疗类型”,其值应基于列中的值(二甲双胍、格列吡嗪、胰岛素): (“治疗类型价值”:(二甲双胍价值、格列吡嗪价值、胰岛素价值)) 我该怎么做 谢谢,有几种方法。一种是使用字典存储您的治疗方法和条件: d = {"No Treatment": ('NO', 'NO', 'NO'), "Metformin": ('YES', 'NO', 'NO') "Glipizide": ('NO', 'YES', 'NO'), ...

这是目前的df_治疗方法

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

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

我该怎么做


谢谢,

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

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

d={“无治疗”:(“无”、“无”、“无”)、“二甲双胍”:(“是”、“无”、“无”)、“格列吡嗪”:(“无”、“是”、“无”)、“二甲双胍-格列吡嗪”:(“是”、“是”、“否”)、“二甲双胍-胰岛素”:(“是”、“无”、“是”)、“格列吡嗪-胰岛素”:('NO','YES','YES','YES','YES'),“二甲双胍-格列吡嗪-胰岛素”:('YES','YES','YES')}arr=df_治疗[[['Metformin','Glipizide','Insulin']]。治疗值,d.items中的标志():df_治疗。loc[(arr==标志)。所有(1),'treatment_type']=df_治疗我这样运行,现在它显示了正在治疗的NaN_类型:(我做错了什么?最后一行看起来是错的,根据我的例子,你需要
=treatments
=df_treatments
毫无意义。
arr = df[['metformin', 'glipizide', 'insulin']].values

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