更新:有了调查问题数据集,我需要将不同答案分类为不同类别:
Index,Q1,Q2,Q3,Q4,Q5,Q6,Q7
1,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,FALSE
2,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE
3,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,TRUE
4,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE
5,TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE
6,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE
7,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE
8,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE
9,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE
10,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE
11,TRUE,TRUE,FALSE,TRUE,FALSE,FALSE,TRUE
生成类别输出的规则(如果未提及,则接受TRUE或FALSE都是可以的:]
Output
Rule 1 Q1 = TRUE Q2 = TRUE Q5 = TRUE High
Rule 2 Q1 = TRUE Q2 = TRUE Q4 = TRUE Q7=TRUE High
Rule 3 Q2 = TRUE Q3 = TRUE Q6 = TRUE Mid
Rule 4 Q2 = TRUE Q3 = TRUE Q7 = TRUE Mid
Rule 5 Q4 = TRUE Q7 = TRUE Q1 = FALSE Q2= FALSE Mid-LOW
Rule 6 all = FALSE LOW
我尝试了以下代码:
c1=df['Q1'].eq('TRUE')
c2=df['Q2'].eq('TRUE')
c3=df['Q5'].eq('TRUE')
c4=df['Q4'].eq('TRUE')
c5=df['Q5'].eq('TRUE')
c6=df['Q6'].eq('TRUE')
c7=df['Q7'].eq('TRUE')
df['Restock Action']=np.where((c1&c2&c5) | (c1&c2&c4&c7),'high','')
问题:在以下情况下,我该如何处理这种情况:1.多个规则具有相同的结果2.有多个结果(即高,中,中低,低)
谢谢!
由于具有两个以上的条件,因此应在指定多个条件并基于这些条件选择的情况下使用np.select
。
我们使用np.select
运算符(NOT
)来捕获~
和False
的c1
,因为它们是相反的。
c2
输出
conditions = [
(c1&c2&c5) | (c1&c2&c4&c7),
(c2&c3&c6) | (c2&c3&c7),
c4%c7&~c1&~c2
]
choices = ['High', 'Mid', 'Mid-Low']
df['Restock Action'] = np.select(conditions, choices, default='Low')