Я думаю, что лучше использовать isin
:
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
(df['Col3'].isin(['No', 'Yes', 'Maybe'])), 'Result'] = 'CORRECT'
Но ваши утверждения отличаются:
@ DeepSpace - комментарий:
Это не имеет ничего общего с пандами, но с приоритетом оператора в Python .Побитовое и (&) имеет приоритет над побитовым или (|), поэтому в этом случае требуются круглые скобки.
np.random.seed(1245)
a = ['No', 'Yes', 'Maybe']
df = pd.DataFrame(np.random.choice(a, size=(10, 3)), columns=['Col1','Col2','Col3'])
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
(df['Col3'] == 'No') |
(df['Col3'] == 'Yes') |
(df['Col3'] == 'Maybe'),
'Result1'] = 'CORRECT'
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
((df['Col3'] == 'No') |
(df['Col3'] == 'Yes') |
(df['Col3'] == 'Maybe')),
'Result2'] = 'CORRECT'
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
(df['Col3'].isin(['No', 'Yes', 'Maybe'])), 'Result3'] = 'CORRECT'
print (df)
Col1 Col2 Col3 Result1 Result2 Result3
0 Maybe Yes Yes CORRECT NaN NaN
1 No Maybe No NaN NaN NaN
2 Yes No Maybe CORRECT NaN NaN
3 Maybe Yes No NaN NaN NaN
4 Yes Yes Maybe CORRECT CORRECT CORRECT
5 Yes Maybe Yes CORRECT NaN NaN
6 Maybe Maybe Yes CORRECT NaN NaN
7 Maybe No Yes CORRECT NaN NaN
8 Maybe Maybe Maybe CORRECT NaN NaN
9 Yes Yes No CORRECT CORRECT CORRECT