def find_match(x):
    match = dfDays.query('index > @x.name & price >= @x.target')
if not match.empty:
    return match.index[0]
dfWeeks.assign(target_hit=dfWeeks.apply(find_match, 1))
Vectorised way to query date and price data