Я думаю, что это можно сделать с помощью pandas, с этими изменениями в вашем коде выше:
import pandas as pd
#get the headers
tab = soup.find('table',{'class': 'table'}).find_all('tr',{'class': 'head-row'})
headers=[]
for h in tab[0].find_all('td'):
headers.append(h.text)
и создать фрейм данных
final = []
for res in results:
tmp = []
for r in res:
if not 'NavigableString' in str(type(r)):
tmp.append(r.text.strip())
final.append(tmp)
df = pd.DataFrame(final,columns=headers)
df
Вывод выглядит как таблица, которую вы хочу.