Я бы порекомендовал вам поближе ознакомиться с документацией Pandas, в частности с функциями groupby
(ссылка здесь ) и merge
(ссылка здесь ).Они дают отличные примеры, которые предлагают части ответа, который вы ищете.Для большего количества примеров того, что может предложить слияние, взгляните на эту статью с тоннами примеров различных комбинаций.
При этом ниже приведен способ использования только панд для полученияобщее количество голов по порядку от высшего к низшему для клубов в этой лиге.
Некоторые предположения, которые я принял:
- Используемая версия Python - 2.7
- Версия Pandasиспользуется не менее 0,19.
- После некоторой группировки и сортировки конечным результатом является новый
dataframe
, которым можно манипулировать. - Файл уже загружен в скрипт Python.
- Столбцы основаны на http://www.football -data.co.uk / notes.txt
- Предполагается, что в столбце
HomeTeam
нет ошибок.
Функция ниже должна повторяться до тех пор, пока ваш фрейм данных будет иметь ту же структуру, что и указанная вами ссылка.
import pandas as pd
def sortTable(df):
"""
Returns a pd.DataFrame with goals scored by teams, sorted by total goals.
df: pd.DataFrame, raw dataframe taken from .csv.
"""
# groups by the Home team name, sums the FTHG, resets the grouping object indexing
home_goals = df.groupby(['HomeTeam'])[['FTHG']].sum().reset_index()
# rename the HomeTeam column to 'Team', column shared by tables to be merged
home_goals.rename(columns = {'HomeTeam': 'Team'}, inplace = True)
# groups by the away team name, sums the FTAG, resets the grouping object indexing
away_goals = df.groupby(['AwayTeam'])[['FTAG']].sum().reset_index()
away_goals.rename(columns = {'AwayTeam': 'Team'}, inplace = True)
# merge the 2 tables by the team name
goals_table = pd.merge(home_goals, away_goals, on='Team')
goals_table['FTG'] = goals_table['FTHG'] + goals_table['FTAG']
return goals_table.sort_values('FTG', ascending=False)
""" ------ Run Function Example ------ """
df_old = pd.read_csv('path_to_csv')
df_new = sortTable(df_old)