的&
操作者比结合更紧密地==
(或任何比较操作符)。请参阅文档。一个简单的例子是:
>>> 2 == 2 & 3 == 3
False
这是因为将其分组为2 == (2 & 3) == 3
,然后调用了比较链接。这就是您的情况。您需要在每个比较之间加上括号。
data = all_data[((all_data['Source'] == 2) &
np.isfinite(all_data[self.design_metric])) |
((all_data['Source'] != 2) &
np.isfinite(all_data[self.actual_metric]))]
请注意==
和!=
比较中的多余括号。