Должно быть O (N * M). С M число уникальных в df2.
И вы должны сохранить уникальный список где-нибудь, чтобы не вычислять его каждый раз.
u = df2.var0.unique()
df1['var1'] = df1['var_ref'].apply(lambda x: True if x in u else False) * 1
Я передаю от 159 мс до 5 мс (600 строк )