From 19de56dc5c693f4ac66ea81c981493f27d2656b9 Mon Sep 17 00:00:00 2001 From: JoeM PC Date: Tue, 23 Apr 2024 15:10:46 +0100 Subject: [PATCH] added functionality such as getting match results by event, team rankings for event, and match stats --- main.py | 123 ++++ requirements.txt | 1 - test.ipynb | 1750 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1873 insertions(+), 1 deletion(-) create mode 100644 test.ipynb diff --git a/main.py b/main.py index bb8042f..1ba20c2 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,7 @@ from python_utils import converters import time import zoneinfo import tzlocal +import random HLTV_COOKIE_TIMEZONE = "Europe/Copenhagen" HLTV_ZONEINFO=zoneinfo.ZoneInfo(HLTV_COOKIE_TIMEZONE) @@ -56,6 +57,31 @@ def get_parsed_page(url, delay=0.5): return BeautifulSoup(requests.get(url, headers=headers, cookies=cookies).text, "lxml") +def get_parsed_page_matches(url, delay=0.5, max_trys = 100): + # This fixes a blocked error when trying to get game results page + headers = { + "referer": "https://www.hltv.org/matches", ## Have changed referer + "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + } + + cookies = { + "hltvTimeZone": HLTV_COOKIE_TIMEZONE + } + + time.sleep(delay) + req = requests.get(url, headers=headers, cookies=cookies) + + try_number = 1 + while req.status_code == 403: + time.sleep(delay) + req = requests.get(url, headers=headers, cookies=cookies) + try_number += 1 + if try_number == max_trys: + break + + results = BeautifulSoup(req.text, "lxml") + return results + def top5teams(): home = get_parsed_page("https://hltv.org/") teams = [] @@ -442,6 +468,103 @@ def get_match_countdown(match_id): return _generate_countdown(date, time) +def get_results_by_event(event_id): + + ## event id given as integer + + results = get_parsed_page("https://www.hltv.org/results?event=" + str(event_id)) + + results_list = [] + + pastresults = results.find_all("div", {"class": "results-holder"}) + + for result in pastresults: + resultDiv = result.find_all("div", {"class": "result-con"}) + + for res in resultDiv: + resultObj = {} + + resultObj['url'] = "https://hltv.org" + res.find("a", {"class": "a-reset"}).get("href") + + resultObj['match-id'] = converters.to_int(res.find("a", {"class": "a-reset"}).get("href").split("/")[-2]) + + if (res.parent.find("span", {"class": "standard-headline"})): + dateText = res.parent.find("span", {"class": "standard-headline"}).text.replace("Results for ", "").replace("th", "").replace("rd","").replace("st","").replace("nd","") + + dateArr = dateText.split() + + dateTextFromArrPadded = _padIfNeeded(dateArr[2]) + "-" + _padIfNeeded(_monthNameToNumber(dateArr[0])) + "-" + _padIfNeeded(dateArr[1]) + dateFromHLTV = datetime.datetime.strptime(dateTextFromArrPadded,'%Y-%m-%d').replace(tzinfo=HLTV_ZONEINFO) + dateFromHLTV = dateFromHLTV.astimezone(LOCAL_ZONEINFO) + + resultObj['date'] = dateFromHLTV.strftime('%Y-%m-%d') + else: + dt = datetime.date.today() + resultObj['date'] = str(dt.day) + '/' + str(dt.month) + '/' + str(dt.year) + + if (res.find("td", {"class": "placeholder-text-cell"})): + resultObj['event'] = res.find("td", {"class": "placeholder-text-cell"}).text + elif (res.find("td", {"class": "event"})): + resultObj['event'] = res.find("td", {"class": "event"}).text + else: + resultObj['event'] = None + + if (res.find_all("td", {"class": "team-cell"})): + resultObj['team1'] = res.find_all("td", {"class": "team-cell"})[0].text.lstrip().rstrip() + resultObj['team1score'] = converters.to_int(res.find("td", {"class": "result-score"}).find_all("span")[0].text.lstrip().rstrip()) + resultObj['team1-id'] = _findTeamId(res.find_all("td", {"class": "team-cell"})[0].text.lstrip().rstrip()) + resultObj['team2'] = res.find_all("td", {"class": "team-cell"})[1].text.lstrip().rstrip() + resultObj['team2-id'] = _findTeamId(res.find_all("td", {"class": "team-cell"})[1].text.lstrip().rstrip()) + resultObj['team2score'] = converters.to_int(res.find("td", {"class": "result-score"}).find_all("span")[1].text.lstrip().rstrip()) + else: + resultObj['team1'] = None + resultObj['team1-id'] = None + resultObj['team1score'] = None + resultObj['team2'] = None + resultObj['team2-id'] = None + resultObj['team2score'] = None + + results_list.append(resultObj) + + return results_list + +def get_event_team_rankings(event_id): + + url = 'https://www.hltv.org/events/'+ str(event_id) +'/page' + + results = get_parsed_page_matches(url) + ranking = [r.text.strip('#') for r in results.find_all('div', attrs={'class': 'event-world-rank'})] + teams = [r.text for r in results.find_all('div', attrs={'class': 'text'})] + + team_id_map = {} + for i, team in enumerate(teams): + if i< len(ranking): ## Sometimes teams do not have ranking (displayed last) + team_id_map[team] = ranking[i] + else: + team_id_map[team] = None + + return team_id_map + +def get_match_stats(match_id): + + match_stats = {} + + url = 'https://www.hltv.org/matches/' + str(match_id) + '/page' + + results = get_parsed_page_matches(url) + + match_stats['match-id'] = match_id + match_stats['match_type'] = results.find('div', attrs={'class': 'padding preformatted-text'}).text.strip().split('\n')[2] + + player_stats = results.find_all('tr', attrs={'class': ''}) + for i, player in enumerate(player_stats[0:10]): + + match_stats[f'player{i}_id'] = player.find('a', attrs = {'class': 'flagAlign no-maps-indicator-offset'}).get('href').split('/')[2] + match_stats[f'player{i}_rating'] = player.find('td', attrs = {'class': "rating text-center"}).text + return match_stats + + + if __name__ == "__main__": import pprint pp = pprint.PrettyPrinter() diff --git a/requirements.txt b/requirements.txt index b0d4aec..508dad1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ beautifulsoup4==4.11.1 bs4==0.0.1 -lxml==4.9.1 python-utils==2.0.0 requests==2.31.0 six==1.10.0 diff --git a/test.ipynb b/test.ipynb new file mode 100644 index 0000000..5eff2be --- /dev/null +++ b/test.ipynb @@ -0,0 +1,1750 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import main as hltv\n", + "import pandas as pd\n", + "import requests\n", + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
urlmatch-iddateeventteam1team1scoreteam1-idteam2team2-idteam2score
0https://hltv.org/matches/2370931/mouz-vs-faze-...23709312024-04-13NoneMOUZ0NaNFaZeNaN2
1https://hltv.org/matches/2370930/astralis-vs-f...23709302024-04-12NoneAstralis1NaNFaZeNaN2
2https://hltv.org/matches/2370929/mouz-vs-g2-ie...23709292024-04-12NoneMOUZ2NaNG2NaN1
3https://hltv.org/matches/2370928/liquid-vs-faz...23709282024-04-11NoneLiquid1NaNFaZeNaN2
4https://hltv.org/matches/2370927/virtuspro-vs-...23709272024-04-11NoneVirtus.pro05378.0G25995.02
5https://hltv.org/matches/2370917/g2-vs-heroic-...23709172024-04-09NoneG225995.0HEROIC7175.00
6https://hltv.org/matches/2370926/faze-vs-flyqu...23709262024-04-09NoneFaZe26667.0FlyQuest12774.00
7https://hltv.org/matches/2370918/liquid-vs-mou...23709182024-04-09NoneLiquid05973.0MOUZ4494.02
8https://hltv.org/matches/2370925/virtuspro-vs-...23709252024-04-09NoneVirtus.pro05378.0Astralis6665.02
9https://hltv.org/matches/2370923/flyquest-vs-n...23709232024-04-09NoneFlyQuest212774.0Nemiga7969.00
10https://hltv.org/matches/2370924/cloud9-vs-faz...23709242024-04-09NoneCloud905752.0FaZe6667.02
11https://hltv.org/matches/2370915/heroic-vs-fur...23709152024-04-08NoneHEROIC27175.0FURIA8297.01
12https://hltv.org/matches/2370916/g2-vs-lynn-vi...23709162024-04-08NoneG225995.0Lynn Vision8840.00
13https://hltv.org/matches/2370919/astralis-vs-f...23709192024-04-08NoneAstralis26665.0FaZe6667.00
14https://hltv.org/matches/2370920/steel-helmet-...23709202024-04-08NoneSteel Helmet011273.0Nemiga7969.02
15https://hltv.org/matches/2370921/flyquest-vs-v...23709212024-04-08NoneFlyQuest112774.0Virtus.pro5378.02
16https://hltv.org/matches/2370922/cloud9-vs-wil...23709222024-04-08NoneCloud925752.0Wildcard12257.00
17https://hltv.org/matches/2370913/furia-vs-mouz...23709132024-04-07NoneFURIA18297.0MOUZ4494.02
18https://hltv.org/matches/2370914/lynn-vision-v...23709142024-04-07NoneLynn Vision28840.0TYLOO4863.00
19https://hltv.org/matches/2370911/g2-vs-liquid-...23709112024-04-07NoneG215995.0Liquid5973.02
20https://hltv.org/matches/2370912/9z-vs-heroic-...23709122024-04-07None9z09996.0HEROIC7175.02
21https://hltv.org/matches/2370909/faze-vs-nemig...23709092024-04-07NoneFaZe136667.0Nemiga7969.08
22https://hltv.org/matches/2370910/steel-helmet-...23709102024-04-07NoneSteel Helmet211273.0Astralis6665.013
23https://hltv.org/matches/2370908/wildcard-vs-v...23709082024-04-07NoneWildcard112257.0Virtus.pro5378.013
24https://hltv.org/matches/2370907/cloud9-vs-fly...23709072024-04-07NoneCloud965752.0FlyQuest12774.013
25https://hltv.org/matches/2370906/tyloo-vs-mouz...23709062024-04-07NoneTYLOO114863.0MOUZ4494.013
26https://hltv.org/matches/2370905/furia-vs-lynn...23709052024-04-07NoneFURIA138297.0Lynn Vision8840.09
27https://hltv.org/matches/2370903/g2-vs-9z-iem-...23709032024-04-07NoneG2135995.09z9996.010
28https://hltv.org/matches/2370904/liquid-vs-her...23709042024-04-07NoneLiquid135973.0HEROIC7175.08
\n", + "
" + ], + "text/plain": [ + " url match-id date \\\n", + "0 https://hltv.org/matches/2370931/mouz-vs-faze-... 2370931 2024-04-13 \n", + "1 https://hltv.org/matches/2370930/astralis-vs-f... 2370930 2024-04-12 \n", + "2 https://hltv.org/matches/2370929/mouz-vs-g2-ie... 2370929 2024-04-12 \n", + "3 https://hltv.org/matches/2370928/liquid-vs-faz... 2370928 2024-04-11 \n", + "4 https://hltv.org/matches/2370927/virtuspro-vs-... 2370927 2024-04-11 \n", + "5 https://hltv.org/matches/2370917/g2-vs-heroic-... 2370917 2024-04-09 \n", + "6 https://hltv.org/matches/2370926/faze-vs-flyqu... 2370926 2024-04-09 \n", + "7 https://hltv.org/matches/2370918/liquid-vs-mou... 2370918 2024-04-09 \n", + "8 https://hltv.org/matches/2370925/virtuspro-vs-... 2370925 2024-04-09 \n", + "9 https://hltv.org/matches/2370923/flyquest-vs-n... 2370923 2024-04-09 \n", + "10 https://hltv.org/matches/2370924/cloud9-vs-faz... 2370924 2024-04-09 \n", + "11 https://hltv.org/matches/2370915/heroic-vs-fur... 2370915 2024-04-08 \n", + "12 https://hltv.org/matches/2370916/g2-vs-lynn-vi... 2370916 2024-04-08 \n", + "13 https://hltv.org/matches/2370919/astralis-vs-f... 2370919 2024-04-08 \n", + "14 https://hltv.org/matches/2370920/steel-helmet-... 2370920 2024-04-08 \n", + "15 https://hltv.org/matches/2370921/flyquest-vs-v... 2370921 2024-04-08 \n", + "16 https://hltv.org/matches/2370922/cloud9-vs-wil... 2370922 2024-04-08 \n", + "17 https://hltv.org/matches/2370913/furia-vs-mouz... 2370913 2024-04-07 \n", + "18 https://hltv.org/matches/2370914/lynn-vision-v... 2370914 2024-04-07 \n", + "19 https://hltv.org/matches/2370911/g2-vs-liquid-... 2370911 2024-04-07 \n", + "20 https://hltv.org/matches/2370912/9z-vs-heroic-... 2370912 2024-04-07 \n", + "21 https://hltv.org/matches/2370909/faze-vs-nemig... 2370909 2024-04-07 \n", + "22 https://hltv.org/matches/2370910/steel-helmet-... 2370910 2024-04-07 \n", + "23 https://hltv.org/matches/2370908/wildcard-vs-v... 2370908 2024-04-07 \n", + "24 https://hltv.org/matches/2370907/cloud9-vs-fly... 2370907 2024-04-07 \n", + "25 https://hltv.org/matches/2370906/tyloo-vs-mouz... 2370906 2024-04-07 \n", + "26 https://hltv.org/matches/2370905/furia-vs-lynn... 2370905 2024-04-07 \n", + "27 https://hltv.org/matches/2370903/g2-vs-9z-iem-... 2370903 2024-04-07 \n", + "28 https://hltv.org/matches/2370904/liquid-vs-her... 2370904 2024-04-07 \n", + "\n", + " event team1 team1score team1-id team2 team2-id \\\n", + "0 None MOUZ 0 NaN FaZe NaN \n", + "1 None Astralis 1 NaN FaZe NaN \n", + "2 None MOUZ 2 NaN G2 NaN \n", + "3 None Liquid 1 NaN FaZe NaN \n", + "4 None Virtus.pro 0 5378.0 G2 5995.0 \n", + "5 None G2 2 5995.0 HEROIC 7175.0 \n", + "6 None FaZe 2 6667.0 FlyQuest 12774.0 \n", + "7 None Liquid 0 5973.0 MOUZ 4494.0 \n", + "8 None Virtus.pro 0 5378.0 Astralis 6665.0 \n", + "9 None FlyQuest 2 12774.0 Nemiga 7969.0 \n", + "10 None Cloud9 0 5752.0 FaZe 6667.0 \n", + "11 None HEROIC 2 7175.0 FURIA 8297.0 \n", + "12 None G2 2 5995.0 Lynn Vision 8840.0 \n", + "13 None Astralis 2 6665.0 FaZe 6667.0 \n", + "14 None Steel Helmet 0 11273.0 Nemiga 7969.0 \n", + "15 None FlyQuest 1 12774.0 Virtus.pro 5378.0 \n", + "16 None Cloud9 2 5752.0 Wildcard 12257.0 \n", + "17 None FURIA 1 8297.0 MOUZ 4494.0 \n", + "18 None Lynn Vision 2 8840.0 TYLOO 4863.0 \n", + "19 None G2 1 5995.0 Liquid 5973.0 \n", + "20 None 9z 0 9996.0 HEROIC 7175.0 \n", + "21 None FaZe 13 6667.0 Nemiga 7969.0 \n", + "22 None Steel Helmet 2 11273.0 Astralis 6665.0 \n", + "23 None Wildcard 1 12257.0 Virtus.pro 5378.0 \n", + "24 None Cloud9 6 5752.0 FlyQuest 12774.0 \n", + "25 None TYLOO 11 4863.0 MOUZ 4494.0 \n", + "26 None FURIA 13 8297.0 Lynn Vision 8840.0 \n", + "27 None G2 13 5995.0 9z 9996.0 \n", + "28 None Liquid 13 5973.0 HEROIC 7175.0 \n", + "\n", + " team2score \n", + "0 2 \n", + "1 2 \n", + "2 1 \n", + "3 2 \n", + "4 2 \n", + "5 0 \n", + "6 0 \n", + "7 2 \n", + "8 2 \n", + "9 0 \n", + "10 2 \n", + "11 1 \n", + "12 0 \n", + "13 0 \n", + "14 2 \n", + "15 2 \n", + "16 0 \n", + "17 2 \n", + "18 0 \n", + "19 2 \n", + "20 2 \n", + "21 8 \n", + "22 13 \n", + "23 13 \n", + "24 13 \n", + "25 13 \n", + "26 9 \n", + "27 10 \n", + "28 8 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "event_id = 7437\n", + "data = hltv.get_results_by_event(event_id)\n", + "\n", + "df = pd.DataFrame(data)\n", + "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "match_ids = df['match-id']\n", + "match_stats = []\n", + "for match_id in match_ids:\n", + " match_stats.append(hltv.get_match_stats(match_id))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df2 = pd.DataFrame(match_stats)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
match-idmatch_typeplayer0_idplayer0_ratingplayer1_idplayer1_ratingplayer2_idplayer2_ratingplayer3_idplayer3_rating...player5_idplayer5_ratingplayer6_idplayer6_ratingplayer7_idplayer7_ratingplayer8_idplayer8_ratingplayer9_idplayer9_rating
02370931* Grand final188501.08180721.02136660.90203120.82...180721.47188501.29203121.00168200.75136660.47
12370930* Semi-final167171.04109941.02179561.00203040.95...109941.16179561.1475921.13167171.10203041.04
22370929* Semi-final203121.28188501.22180721.13136661.00...203121.30188501.12180721.06136660.97168200.54
32370928* Quarter-final79641.1585201.07139150.99103940.97...79641.07186760.9985200.89139150.77103940.67
42370927* Quarter-final201011.22127321.05166120.89137760.78...201011.50127321.14137760.7487890.70166120.62
52370917* Group A lower bracket final. Winner advances...192301.4737411.3696181.2239721.05...37411.38192301.3696181.2939721.18100960.99
62370926* Group B lower bracket final. Winner advances...99601.7381831.32180531.18118161.13...99601.604291.23118161.18180531.1781831.02
72370918* Group A upper bracket final. Winner advances...85201.12186761.03103941.01139150.80...85201.35103941.26186760.97139150.7579640.66
82370925* Group B upper bracket final. Winner advances...127321.19137760.84166120.7987890.67...127321.32137760.76166120.7487890.56201010.51
92370923* Group B lower bracket semi-final111401.4391151.27173841.10111390.90...111401.26173841.14111390.9991150.96105880.70
102370924* Group B lower bracket semi-final165551.00118400.92169470.9285280.91...165551.40118401.0685280.93169470.9089180.83
112370915* Group A lower bracket semi-final94361.17196771.12120181.05136021.03...94361.39196771.29136021.05141481.00120180.97
122370916* Group A lower bracket semi-final192301.5537411.4939721.4096181.11...192301.8337411.5596181.2939721.09100960.88
132370919* Group B upper bracket semi-final. Winner adv...109941.5275921.42203041.35179561.12...109941.66179561.66203041.5575921.52167171.05
142370920* Group B lower bracket round115740.8251870.8070260.72129580.62...51871.04115740.76129580.7570260.52145610.40
152370921* Group B upper bracket semi-final. Winner adv...173841.13111400.97105880.92111390.83...173841.10111401.05105881.00111390.9291150.77
162370922* Group B lower bracket round 185281.74169471.4489181.44118401.38...85281.91118401.79169471.6389181.40165551.26
172370913* Group A upper bracket semi-final. Winner adv...20231.16105661.11125211.03125530.93...125531.37125211.3220231.31105661.26156311.13
182370914* Group A lower bracket round 1207021.55229221.32202541.23165511.11...207021.65229221.22165511.22202541.04187441.02
192370911* Group A upper bracket semi-final. Winner adv...192301.30100960.8937410.8896180.85...192301.2939721.0796181.04100961.0337410.95
202370912* Group A lower bracket round 1212391.16147361.02226130.91206070.83...212391.54206071.00226130.97147360.86120920.60
212370909* Group B upper bracket quarter-final180531.54118161.5481831.2999601.22...180531.3881831.24118161.1799601.014290.64
222370910* Group B upper bracket quarter-final51870.87129580.75145610.6470260.32...51872.35129580.75145610.4670260.08115740.01
232370908* Group B upper bracket quarter-final85070.5687110.51191280.46113320.36...191280.39132300.3287110.2085070.01113320.00
242370907* Group B upper bracket quarter-final89181.0785280.91169470.77165550.73...89180.6885280.65118400.28165550.20169470.09
252370906* Group A upper bracket quarter-final208951.29196451.2689500.92240360.74...196451.45208951.3489500.95240360.9586000.62
262370905* Group A upper bracket quarter-final156311.40125211.25125531.0820231.05...156311.5420231.42125531.28105660.95125210.87
272370903* Group A upper bracket quarter-final37411.6396181.5039721.01192300.93...37411.6396181.63192301.16100960.6739720.57
282370904* Group A upper bracket quarter-final103941.6079641.39186761.2185201.17...103942.2479641.81186761.6585201.06139150.62
\n", + "

29 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " match-id match_type player0_id \\\n", + "0 2370931 * Grand final 18850 \n", + "1 2370930 * Semi-final 16717 \n", + "2 2370929 * Semi-final 20312 \n", + "3 2370928 * Quarter-final 7964 \n", + "4 2370927 * Quarter-final 20101 \n", + "5 2370917 * Group A lower bracket final. Winner advances... 19230 \n", + "6 2370926 * Group B lower bracket final. Winner advances... 9960 \n", + "7 2370918 * Group A upper bracket final. Winner advances... 8520 \n", + "8 2370925 * Group B upper bracket final. Winner advances... 12732 \n", + "9 2370923 * Group B lower bracket semi-final 11140 \n", + "10 2370924 * Group B lower bracket semi-final 16555 \n", + "11 2370915 * Group A lower bracket semi-final 9436 \n", + "12 2370916 * Group A lower bracket semi-final 19230 \n", + "13 2370919 * Group B upper bracket semi-final. Winner adv... 10994 \n", + "14 2370920 * Group B lower bracket round 11574 \n", + "15 2370921 * Group B upper bracket semi-final. Winner adv... 17384 \n", + "16 2370922 * Group B lower bracket round 1 8528 \n", + "17 2370913 * Group A upper bracket semi-final. Winner adv... 2023 \n", + "18 2370914 * Group A lower bracket round 1 20702 \n", + "19 2370911 * Group A upper bracket semi-final. Winner adv... 19230 \n", + "20 2370912 * Group A lower bracket round 1 21239 \n", + "21 2370909 * Group B upper bracket quarter-final 18053 \n", + "22 2370910 * Group B upper bracket quarter-final 5187 \n", + "23 2370908 * Group B upper bracket quarter-final 8507 \n", + "24 2370907 * Group B upper bracket quarter-final 8918 \n", + "25 2370906 * Group A upper bracket quarter-final 20895 \n", + "26 2370905 * Group A upper bracket quarter-final 15631 \n", + "27 2370903 * Group A upper bracket quarter-final 3741 \n", + "28 2370904 * Group A upper bracket quarter-final 10394 \n", + "\n", + " player0_rating player1_id player1_rating player2_id player2_rating \\\n", + "0 1.08 18072 1.02 13666 0.90 \n", + "1 1.04 10994 1.02 17956 1.00 \n", + "2 1.28 18850 1.22 18072 1.13 \n", + "3 1.15 8520 1.07 13915 0.99 \n", + "4 1.22 12732 1.05 16612 0.89 \n", + "5 1.47 3741 1.36 9618 1.22 \n", + "6 1.73 8183 1.32 18053 1.18 \n", + "7 1.12 18676 1.03 10394 1.01 \n", + "8 1.19 13776 0.84 16612 0.79 \n", + "9 1.43 9115 1.27 17384 1.10 \n", + "10 1.00 11840 0.92 16947 0.92 \n", + "11 1.17 19677 1.12 12018 1.05 \n", + "12 1.55 3741 1.49 3972 1.40 \n", + "13 1.52 7592 1.42 20304 1.35 \n", + "14 0.82 5187 0.80 7026 0.72 \n", + "15 1.13 11140 0.97 10588 0.92 \n", + "16 1.74 16947 1.44 8918 1.44 \n", + "17 1.16 10566 1.11 12521 1.03 \n", + "18 1.55 22922 1.32 20254 1.23 \n", + "19 1.30 10096 0.89 3741 0.88 \n", + "20 1.16 14736 1.02 22613 0.91 \n", + "21 1.54 11816 1.54 8183 1.29 \n", + "22 0.87 12958 0.75 14561 0.64 \n", + "23 0.56 8711 0.51 19128 0.46 \n", + "24 1.07 8528 0.91 16947 0.77 \n", + "25 1.29 19645 1.26 8950 0.92 \n", + "26 1.40 12521 1.25 12553 1.08 \n", + "27 1.63 9618 1.50 3972 1.01 \n", + "28 1.60 7964 1.39 18676 1.21 \n", + "\n", + " player3_id player3_rating ... player5_id player5_rating player6_id \\\n", + "0 20312 0.82 ... 18072 1.47 18850 \n", + "1 20304 0.95 ... 10994 1.16 17956 \n", + "2 13666 1.00 ... 20312 1.30 18850 \n", + "3 10394 0.97 ... 7964 1.07 18676 \n", + "4 13776 0.78 ... 20101 1.50 12732 \n", + "5 3972 1.05 ... 3741 1.38 19230 \n", + "6 11816 1.13 ... 9960 1.60 429 \n", + "7 13915 0.80 ... 8520 1.35 10394 \n", + "8 8789 0.67 ... 12732 1.32 13776 \n", + "9 11139 0.90 ... 11140 1.26 17384 \n", + "10 8528 0.91 ... 16555 1.40 11840 \n", + "11 13602 1.03 ... 9436 1.39 19677 \n", + "12 9618 1.11 ... 19230 1.83 3741 \n", + "13 17956 1.12 ... 10994 1.66 17956 \n", + "14 12958 0.62 ... 5187 1.04 11574 \n", + "15 11139 0.83 ... 17384 1.10 11140 \n", + "16 11840 1.38 ... 8528 1.91 11840 \n", + "17 12553 0.93 ... 12553 1.37 12521 \n", + "18 16551 1.11 ... 20702 1.65 22922 \n", + "19 9618 0.85 ... 19230 1.29 3972 \n", + "20 20607 0.83 ... 21239 1.54 20607 \n", + "21 9960 1.22 ... 18053 1.38 8183 \n", + "22 7026 0.32 ... 5187 2.35 12958 \n", + "23 11332 0.36 ... 19128 0.39 13230 \n", + "24 16555 0.73 ... 8918 0.68 8528 \n", + "25 24036 0.74 ... 19645 1.45 20895 \n", + "26 2023 1.05 ... 15631 1.54 2023 \n", + "27 19230 0.93 ... 3741 1.63 9618 \n", + "28 8520 1.17 ... 10394 2.24 7964 \n", + "\n", + " player6_rating player7_id player7_rating player8_id player8_rating \\\n", + "0 1.29 20312 1.00 16820 0.75 \n", + "1 1.14 7592 1.13 16717 1.10 \n", + "2 1.12 18072 1.06 13666 0.97 \n", + "3 0.99 8520 0.89 13915 0.77 \n", + "4 1.14 13776 0.74 8789 0.70 \n", + "5 1.36 9618 1.29 3972 1.18 \n", + "6 1.23 11816 1.18 18053 1.17 \n", + "7 1.26 18676 0.97 13915 0.75 \n", + "8 0.76 16612 0.74 8789 0.56 \n", + "9 1.14 11139 0.99 9115 0.96 \n", + "10 1.06 8528 0.93 16947 0.90 \n", + "11 1.29 13602 1.05 14148 1.00 \n", + "12 1.55 9618 1.29 3972 1.09 \n", + "13 1.66 20304 1.55 7592 1.52 \n", + "14 0.76 12958 0.75 7026 0.52 \n", + "15 1.05 10588 1.00 11139 0.92 \n", + "16 1.79 16947 1.63 8918 1.40 \n", + "17 1.32 2023 1.31 10566 1.26 \n", + "18 1.22 16551 1.22 20254 1.04 \n", + "19 1.07 9618 1.04 10096 1.03 \n", + "20 1.00 22613 0.97 14736 0.86 \n", + "21 1.24 11816 1.17 9960 1.01 \n", + "22 0.75 14561 0.46 7026 0.08 \n", + "23 0.32 8711 0.20 8507 0.01 \n", + "24 0.65 11840 0.28 16555 0.20 \n", + "25 1.34 8950 0.95 24036 0.95 \n", + "26 1.42 12553 1.28 10566 0.95 \n", + "27 1.63 19230 1.16 10096 0.67 \n", + "28 1.81 18676 1.65 8520 1.06 \n", + "\n", + " player9_id player9_rating \n", + "0 13666 0.47 \n", + "1 20304 1.04 \n", + "2 16820 0.54 \n", + "3 10394 0.67 \n", + "4 16612 0.62 \n", + "5 10096 0.99 \n", + "6 8183 1.02 \n", + "7 7964 0.66 \n", + "8 20101 0.51 \n", + "9 10588 0.70 \n", + "10 8918 0.83 \n", + "11 12018 0.97 \n", + "12 10096 0.88 \n", + "13 16717 1.05 \n", + "14 14561 0.40 \n", + "15 9115 0.77 \n", + "16 16555 1.26 \n", + "17 15631 1.13 \n", + "18 18744 1.02 \n", + "19 3741 0.95 \n", + "20 12092 0.60 \n", + "21 429 0.64 \n", + "22 11574 0.01 \n", + "23 11332 0.00 \n", + "24 16947 0.09 \n", + "25 8600 0.62 \n", + "26 12521 0.87 \n", + "27 3972 0.57 \n", + "28 13915 0.62 \n", + "\n", + "[29 rows x 22 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'FaZe': '1', 'G2': '5', 'MOUZ': '6', 'Cloud9': '7', 'Virtus.pro': '9', 'HEROIC': '11', 'FURIA': '15', 'Astralis': '25', 'Lynn Vision': '34', 'Liquid': '37', 'FlyQuest': '41', 'Nemiga': '46', 'Wildcard': '49', '9z': '52', 'TYLOO': '132', 'Steel Helmet': None}\n" + ] + } + ], + "source": [ + "event_team_rankings = hltv.get_event_team_rankings(event_id)\n", + "\n", + "print(event_team_rankings)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.merge(df, df2, on='match-id', how = 'inner')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
urlmatch-iddateeventteam1team1scoreteam1-idteam2team2-idteam2score...player5_idplayer5_ratingplayer6_idplayer6_ratingplayer7_idplayer7_ratingplayer8_idplayer8_ratingplayer9_idplayer9_rating
0https://hltv.org/matches/2370931/mouz-vs-faze-...23709312024-04-13NoneMOUZ0NaNFaZeNaN2...180721.47188501.29203121.00168200.75136660.47
1https://hltv.org/matches/2370930/astralis-vs-f...23709302024-04-12NoneAstralis1NaNFaZeNaN2...109941.16179561.1475921.13167171.10203041.04
2https://hltv.org/matches/2370929/mouz-vs-g2-ie...23709292024-04-12NoneMOUZ2NaNG2NaN1...203121.30188501.12180721.06136660.97168200.54
3https://hltv.org/matches/2370928/liquid-vs-faz...23709282024-04-11NoneLiquid1NaNFaZeNaN2...79641.07186760.9985200.89139150.77103940.67
4https://hltv.org/matches/2370927/virtuspro-vs-...23709272024-04-11NoneVirtus.pro05378.0G25995.02...201011.50127321.14137760.7487890.70166120.62
\n", + "

5 rows × 31 columns

\n", + "
" + ], + "text/plain": [ + " url match-id date \\\n", + "0 https://hltv.org/matches/2370931/mouz-vs-faze-... 2370931 2024-04-13 \n", + "1 https://hltv.org/matches/2370930/astralis-vs-f... 2370930 2024-04-12 \n", + "2 https://hltv.org/matches/2370929/mouz-vs-g2-ie... 2370929 2024-04-12 \n", + "3 https://hltv.org/matches/2370928/liquid-vs-faz... 2370928 2024-04-11 \n", + "4 https://hltv.org/matches/2370927/virtuspro-vs-... 2370927 2024-04-11 \n", + "\n", + " event team1 team1score team1-id team2 team2-id team2score ... \\\n", + "0 None MOUZ 0 NaN FaZe NaN 2 ... \n", + "1 None Astralis 1 NaN FaZe NaN 2 ... \n", + "2 None MOUZ 2 NaN G2 NaN 1 ... \n", + "3 None Liquid 1 NaN FaZe NaN 2 ... \n", + "4 None Virtus.pro 0 5378.0 G2 5995.0 2 ... \n", + "\n", + " player5_id player5_rating player6_id player6_rating player7_id \\\n", + "0 18072 1.47 18850 1.29 20312 \n", + "1 10994 1.16 17956 1.14 7592 \n", + "2 20312 1.30 18850 1.12 18072 \n", + "3 7964 1.07 18676 0.99 8520 \n", + "4 20101 1.50 12732 1.14 13776 \n", + "\n", + " player7_rating player8_id player8_rating player9_id player9_rating \n", + "0 1.00 16820 0.75 13666 0.47 \n", + "1 1.13 16717 1.10 20304 1.04 \n", + "2 1.06 13666 0.97 16820 0.54 \n", + "3 0.89 13915 0.77 10394 0.67 \n", + "4 0.74 8789 0.70 16612 0.62 \n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}