pandas 有没有一个Python函数可以让我在一个 Dataframe 中总结一个团队的最后目标?

elcex8rz  于 2023-05-12  发布在  Python
关注(0)|答案(1)|浏览(122)

我在自学足球数据科学,想分析土耳其联赛的一些情况。现在我试着从即将到来的比赛中对两支球队过去的5场比赛做一些分析。首先,我已经做了一个本赛季比赛的数据框。现在我想做一个指标点的目标,从每支球队,但从本赛季开始。其理念是:我计算主队在过去5场比赛中进了多少球,主场进球算1分,客场进球算2分。我对客队和失球也是一样的。目前,当我过滤最后5场主场比赛时,我只得到了他在主场的最后5场比赛,而不是最后5场比赛。
这是我目前为止的代码

import pandas as pd

webs = pd.read_csv('https://www.football-data.co.uk/mmz4281/2223/T1.csv')
tk = webs[['Date','HomeTeam','AwayTeam','FTHG','FTAG','FTR']]
tk.columns = ['Data','Home','Away','FT_Gols_H','FT_Gols_A','FT_Result']

tk['Goal_Points'] = tk.groupby('Home')['FT_Gols_H'].rolling(window=5, min_periods=1).sum().reset_index(0,drop=True).shift(1)
ykejflvf

ykejflvf1#

我建议你重新格式化一下你的数据。将dataframe转换为3列:日期,球队,以及他们在那天的进球,无论他们是在主场还是客场。
示例:

home_team_games = tk[['Data', 'Home', 'FT_Gols_H']].rename(columns={
    'Home': 'Team',
    'FT_Gols_H': 'Goals',
})
away_team_games = tk[['Data', 'Away', 'FT_Gols_A']].rename(columns={
    'Away': 'Team',
    'FT_Gols_A': 'Goals',
})
tk = pd.concat([home_team_games, away_team_games])
tk = tk.sort_values('Data')

然后你有一个这样的dataframe:

Data          Team  Goals
193  01/02/2023   Antalyaspor      0
192  01/02/2023  Umraniyespor      2
191  01/02/2023   Giresunspor      1
190  01/02/2023     Hatayspor      1
193  01/02/2023   Trabzonspor      2
..          ...           ...    ...
189  31/01/2023    Karagumruk      1
107  31/10/2022   Antalyaspor      2
107  31/10/2022     Sivasspor      0
106  31/10/2022   Giresunspor      1
106  31/10/2022    Buyuksehyr      3

我不得不稍微修改你的代码才能让它在这个 Dataframe 上工作。我更改了列的名称,还必须删除两个级别的索引,而不仅仅是第一个级别。

tk['Goals_Prev_5_Games'] = tk.groupby('Team')['Goals'].rolling(window=5, min_periods=1).sum().reset_index(drop=True).shift(1)

相关问题