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