Вы можете просто переписать свою функцию как таковую
def checkUrl(url):
if re.search(".*bet3\.com.*", url):
try:
r = requests.get(url, timeout=5)
except requests.exceptions.ConnectionError:
return 'DOWN'
return str(r.status_code)
return 'BAD'
и затем применить ее следующим образом
df['Status'] = df['Final_URL'].apply(checkUrl)
хотя, как заметил user32185 , в случае, еслиесть дубликаты URL, они будут вызываться дважды.
Чтобы избежать этого, вы можете сделать так, как предложено user32185 , и написать свою функцию следующим образом:
def checkUrls(urls):
results = []
for url in urls:
if re.search(".*bet3\.com.*", url):
try:
r = requests.get(url, timeout=5)
except requests.exceptions.ConnectionError:
results.append([url, 'DOWN'])
results.append([url, str(r.status_code)])
else:
results.append([url, 'BAD'])
return pd.DataFrame(data=results, columns=['Final_URL', 'Status'])
, а затем использоватьэто так:
status_df = checkUrls(df['Final_URL'].unique())
df = df.merge(status_df, how='left', on='Final_URL')