Python 3.x 使用|和&;的多个if语句的Pandas语法;操作员
如果我想在Pandas中使用以下语法使用比较运算符创建Python 3.x 使用|和&;的多个if语句的Pandas语法;操作员,python-3.x,pandas,Python 3.x,Pandas,如果我想在Pandas中使用以下语法使用比较运算符创建If条件,我是否需要将或条件包装在它们自己的括号内 没有额外的括号 加括号 或者两者都有效?很难从文档中推断出哪些应该是正确的。我认为最好使用: 但你的说法不同: @深空-评论: 它与大熊猫没有直接关系,而是与动物有关。位and(&)优先于位or(|),因此在这种情况下需要括号 它与pandas没有直接关系,而是与Python中的运算符优先级有关。按位和(和)优先于按位或(|),因此在本例中需要括号。感谢jezrael,因此包装或条件似乎会
If
条件,我是否需要将或
条件包装在它们自己的括号内
没有额外的括号
加括号
或者两者都有效?很难从文档中推断出哪些应该是正确的。我认为最好使用: 但你的说法不同: @深空-评论:
它与大熊猫没有直接关系,而是与动物有关。位and(&)优先于位or(|),因此在这种情况下需要括号
它与pandas没有直接关系,而是与Python中的运算符优先级有关。按位
和
(和
)优先于按位或
(|
),因此在本例中需要括号。感谢jezrael,因此包装或
条件似乎会导致与isin
相同的结果,而第一个条件不起作用,这正是我所经历的。我将使用isin
版本,谢谢。
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
(df['Col3'] == 'No') |
(df['Col3'] == 'Yes') |
(df['Col3'] == 'Maybe'),
['Result']] = 'CORRECT'
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
((df['Col3'] == 'No') |
(df['Col3'] == 'Yes') |
(df['Col3'] == 'Maybe')),
['Result']] = 'CORRECT'
df.loc[(df['Col1'] == 'Yes') &
(df['Col2'] == 'Yes') &
(df['Col3'].isin(['No', 'Yes', 'Maybe'])), 'Result'] = 'CORRECT'
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