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

2024-05-20 22:40:14 发布

您现在位置: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) 

非常感谢您的帮助/建议


Tags: 答案编码df使用者类别conditions课程values
1条回答
网友
1楼 · 发布于 2024-05-20 22:40:14

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

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

相关问题 更多 >