同等であると思われる pandas コードのスニペットが 2 つありますが、2 番目のスニペットは期待どおりの動作をしません。
# snippet 1
data = all_data[[((np.isfinite(all_data[self.design_metric][i])
and all_data['Source'][i] == 2))
or ((np.isfinite(all_data[self.actual_metric][i])
and all_data['Source'][i] != 2))
for i in range(len(all_data))]]
# snippet 2
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]))]
各セクション (例: all_data['Source'] == 2
) は、それ自体で期待どおりの動作をしますが、最終結果がリスト内包版とは異なる結果になるため、論理演算子に何か問題があるようです。