Предполагая фиксированный порядок компаний (так оно и есть), вы можете просто уменьшить количество проверяемого контента до тех, которые содержат необходимую вам информацию.
import requests
from bs4 import BeautifulSoup
html = requests.get("https://opensignal.com/reports/2019/04/uk/mobile-network-experience").text
soup = BeautifulSoup(html,'html.parser')
res = soup.find_all('div', {'id':'eastern'})
aval = res[0].find_all('div', {'data-chart-name':'4g-availability'})
avalname = aval[0].find('span', {'class':'js-metric-name'}).text
upload = res[0].find_all('div', {'data-chart-name':'upload-speed'})
uploadname = upload[0].find('span', {'class':'js-metric-name'}).text
companies = [i.text for i in aval[0].find_all('span', class_='c-ru-graph__label')]
row1 = [i.text for i in aval[0].find_all('span', class_='c-ru-graph__number')]
row2 = [i.text for i in upload[0].find_all('span', class_='c-ru-graph__number')]
import pandas as pd
df = pd.DataFrame({avalname:row1,
uploadname:row2})
df.index = companies
df = df.T
выход
O2 Vodafone 3 EE
4G Availability 82.0 76.9 73.0 89.2
Upload Speed Experience 5.6 5.9 6.8 9.5