При необходимости новый столбец q
создать логическую маску и привести к целым числам:
reduction = pd.DataFrame({
'q1-1': ['On','On','Off','Off'],
'q1-2': ['On','Off','On','Off']
})
mask = (reduction['q1-1'].astype(str) == "On") & (reduction['q1-2'].astype(str) == "On")
#alternative
mask = (reduction[['q1-1','q1-2']].astype(str) == "On").all(axis=1)
reduction['q'] = mask.astype(int)
print (reduction)
q1-1 q1-2 q
0 On On 1
1 On Off 0
2 Off On 0
3 Off Off 0
Объяснение альтернативы:
Привести столбцы, выбранные подмножеством, в строки и сравнить по DataFrame.eq
==
:
print (reduction[['q1-1','q1-2']].astype(str) == "On")
q1-1 q1-2
0 True True
1 True False
2 False True
3 False False
Затем проверьте, равны ли all
значения True
с для строк:
print ((reduction[['q1-1','q1-2']].astype(str) == "On").all(axis=1))
0 True
1 False
2 False
3 False
dtype: bool