Python:有三个类的新变量的条件



我想创建一个包含所有药物DS59 - DS71的新变量(当前编码的值:1 =从未使用,2 =很少使用,3 =偶尔使用,4 =经常使用)。我想给每个科目分配三节课中的一节,如下所示:

  1. 没有使用者:没有使用任何药物(所有1)
  2. 实验者/轻度吸毒者:各阶层药物使用总分较低(总总分小于20分),无"经常使用"(4分);任何药物类别的答案
  3. 经常使用者-所有类别的药物使用总体得分较高(得分在20分以上),并且至少有一个"偶尔使用"(3);或者"经常使用"(4);任何药物类别的答案

这是我当前的代码-我不确定如何最适当地编写条件。

druglist=[(df['DS59']),(df['DS60']),(df['DS61']),(df['DS62']),(df['DS63']),
(df['DS64']),(df['DS65']),(df['DS66']),(df['DS67']),(df['DS68']),
(df['DS69']),(df['DS70']),(df['DS71'])]
conditions=[
(druglist== ),
(druglist==),
(druglist== ),
]
values=['no user','experimenter/light user','regular user']
df['drugs']=np.select(conditions,values) 

非常感谢你的帮助/建议。

如果我理解正确,这应该是您正在寻找的。如果没有,请告诉我:

drug_sum = sum(druglist)
conditions = [
(drug_sum == len(druglist)),  # If it equals the length, that means every item is 1
(drug_sum <= 20 and not 4 in druglist),
(drug_sum > 20 and (3 in druglist or 4 in druglist)),
]

虽然我不确定,但这些条件不会留下一些不适合任何选项的情况吗?例如,如果一个人在除一种药物外的所有药物上都是1,那么他们在这方面是4。

最新更新