Запрос может быть более эффективным, поскольку он будет векторизован, но все зависит от того, сколько данных вы отфильтровали в первую очередь.
df.query(
'(@start_date <= index < @end_date) & '
'@np.is_busday(index, holidays=@dd.all_holidays)'
)
Примечание: вы уверены, что ваша логическая маска работает? df и датафрейм (возвращаемый loc), который вы индексируете с помощью маски, могут больше не иметь одинаковую длину.