У меня есть два фрагмента кода pandas, которые, как я думаю, должны быть эквивалентными, а второй не выполняет то, что я ожидаю.Использование логических операторов в построении Pandas DataFrame
# 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
) делает то, что я ожидаю от своего собственного, но, кажется, что я делаю что-то неправильно с логическими операторами, как конечный результат выходят с другим результатом до версии списка понимания ,