首页 > 解决方案 > 滚动平均主客场

问题描述

我想计算以前的主客场比赛的滚动平均值。使用此代码,我可以计算 Home 中的先前比赛,但我不知道要计算 Home 和 Away


teams = df['HomeTeam'].unique().tolist()
print(teams)
for team in teams:
    df1 = df[(df['HomeTeam'] == team) | (df['AwayTeam'] == team)]

    if (df1.loc[df['HomeTeam'] == team]).bool:
        df1['Win'] = df1['HG'] > df1['AG']

    elif team in df1['AwayTeam']:
        df1['Win'] = df1['HG'] < df['AG']


输出

                Datetime          HomeTeam          AwayTeam  HG  AG FT     1     X     2       sum
306  2020-01-24 22:30:00           Everton  U. De Concepcion   2   1  H  1.76  3.45  4.52       NaN
305  2020-01-25 01:00:00         O'Higgins   Union La Calera   1   2  A  2.24  3.17  3.10       NaN
304  2020-01-25 16:00:00       Antofagasta          Coquimbo   2   1  H  2.19  3.20  3.16       NaN
303  2020-01-26 00:30:00       A. Italiano          Cobresal   4   1  H  2.12  3.31  3.23       NaN
302  2020-01-26 16:00:00      S. Wanderers       U. Catolica   0   3  A  3.75  3.23  1.97       NaN
..                   ...               ...               ...  ..  .. ..   ...   ...   ...       ...
4    2021-02-14 22:00:00         O'Higgins         Colo Colo   1   1  D  2.27  3.14  3.10  0.250000
3    2021-02-14 22:00:00         La Serena       A. Italiano   0   2  A  2.14  3.22  3.31  0.375000
2    2021-02-14 22:00:00  Deportes Iquique      S. Wanderers   2   0  H  3.13  3.55  2.08  0.312500
1    2021-02-15 14:30:00          Cobresal       U. Espanola   4   1  H  1.29  5.59  7.67  0.500000
0    2021-02-17 22:00:00         Colo Colo  U. De Concepcion   1   0  H  2.53  3.01  2.80  0.352941

我想要分组并获得滚动平均值的团队的数据框示例

Datetime          HomeTeam          AwayTeam  HG  AG FT
0   2020-01-29 00:30:00         Colo Colo         Palestino   3   0  H
1   2020-02-02 16:00:00          Cobresal         Colo Colo   2   1  H
2   2020-02-09 22:00:00       A. Italiano         Colo Colo   2   1  H
3   2020-02-16 22:00:00         Colo Colo       U. Catolica   0   2  A
4   2020-02-24 22:00:00      Curico Unido         Colo Colo   1   0  H
5   2020-02-29 22:00:00         Colo Colo  U. De Concepcion   2   2  D
6   2020-03-07 16:00:00         La Serena         Colo Colo   1   2  A
7   2020-08-29 19:30:00         Colo Colo      S. Wanderers   2   3  A
8   2020-09-06 19:00:00       U. De Chile         Colo Colo   1   1  D
9   2020-09-09 21:00:00         Colo Colo         O'Higgins   0   1  A
10  2020-09-12 23:30:00   Union La Calera         Colo Colo   0   0  D
11  2020-10-03 23:30:00         Colo Colo        Huachipato   0   1  A
12  2020-10-09 23:00:00          Coquimbo         Colo Colo   2   2  D
13  2020-10-14 23:30:00         Colo Colo       U. Espanola   3   5  A
14  2020-10-28 20:00:00           Everton         Colo Colo   1   1  D
15  2020-10-31 15:00:00         Colo Colo  Deportes Iquique   0   2  A
16  2020-11-10 15:00:00         Colo Colo       Antofagasta   1   0  H
17  2020-11-14 15:00:00         Palestino         Colo Colo   3   1  H
18  2020-11-19 22:30:00         Colo Colo       A. Italiano   1   0  H
19  2020-11-25 22:00:00         Colo Colo      Curico Unido   0   2  A
20  2020-12-05 21:00:00        Huachipato         Colo Colo   2   2  D
21  2020-12-08 22:30:00         Colo Colo         La Serena   0   2  A
22  2020-12-12 22:00:00       U. Espanola         Colo Colo   1   2  A
23  2020-12-19 22:00:00       U. Catolica         Colo Colo   0   0  D
24  2021-01-03 14:30:00       Antofagasta         Colo Colo   0   1  A
25  2021-01-06 14:30:00      S. Wanderers         Colo Colo   3   0  H
26  2021-01-10 22:30:00         Colo Colo           Everton   1   0  H
27  2021-01-13 21:00:00  U. De Concepcion         Colo Colo   1   1  D
28  2021-01-17 22:00:00         Colo Colo       U. De Chile   0   0  D
29  2021-01-23 22:00:00         Colo Colo          Coquimbo   2   1  H
30  2021-01-31 22:30:00         Colo Colo   Union La Calera   2   1  H
31  2021-02-07 01:30:00  Deportes Iquique         Colo Colo   0   0  D
32  2021-02-11 22:30:00         Colo Colo          Cobresal   0   0  D
33  2021-02-14 22:00:00         O'Higgins         Colo Colo   1   1  D
34  2021-02-17 22:00:00         Colo Colo  U. De Concepcion   1   0  H

标签: pythonpandasdatetime

解决方案


.iloc[]获取您当前的行并仅对该行进行操作。因此,对于每一行,我们首先检查您当前的球队是主队还是客队,然后我们相应地检查当前球队在该行中是否比其他球队有更多的进球,如果是,我们仅将该行的值设置为True

teams = df['HomeTeam'].unique().tolist()

for team in teams:
    df1 = df[(df['HomeTeam'] == team) | (df['AwayTeam'] == team)]    
    df1['Win'] = False
    for i in range(len(df1)):
        if df1['HomeTeam'].iloc[i] == team:
            if df1['HG'].iloc[i] > df1['AG'].iloc[i]:
                df1['Win'].iloc[i] = True
        elif df1['AwayTeam'].iloc[i] == team:
            if df1['HG'].iloc[i] < df1['AG'].iloc[i]:
                df1['Win'].iloc[i] = True
    
    df1['Rolling'] = 0
    for i in range(1,len(df)):
        df1['Rolling'].iloc[i] = df1['Win'].iloc[:i].sum() / int(i)
        
    for i in range(len(df1)):
        if df1['HomeTeam'].iloc[i] == team:
            df['HomeRolling'].loc[df1.index[i]] = df1['Rolling'].iloc[i]
        elif df1['AwayTeam'].iloc[i] == team:
            df['AwayRolling'].loc[df1.index[i]] = df1['Rolling'].iloc[i]


推荐阅读