比赛周排序

时间:2018-08-14 01:36:23

标签: python pandas sequence pandas-groupby

我有一个CSV文件,其中包含自2005年以来的足球比赛结果。 您可以在链接下面找到数据文件。 Click here to download the file

df的形状是(23758,24) 我想创建一个新列,该列根据 Div

列对所有匹配进行排序

Div包含5个组,例如 E0 F1 I1 SP1 D1 < / strong>。

E0,F1,I1,SP1一年中包含380个匹配项(即日期范围为2005年8月/ 2006年5月),而D1中包含306个匹配项。

我要进行的排序是对E0,F1,I1,SP1每10个匹配项进行编号,对D1每9个匹配项进行编号。

这意味着E0,F1,I1,SP1的前10个匹配项将为1,随后的10个匹配项将为2,依此类推。类似地,D1的前9个匹配项将被分配为1,接下来的9个匹配项将为分配为2等。

如果E0,F1,I1,SP1的数字达到39,则该数字将重新启动。这意味着,如果达到39,则将再次分配为1。

如果D1的数字达到35,它将重新启动,这意味着D1只有1到34,E0,F1,I1,SP1只有1到38。

df ['GW'] = ((data.groupby('Div').cumcount())/10).astype('int64')+1

我在上面尝试过,但是一直到最后。对于 E0,F1,I1,SP1 ,我需要截止到38;对于 D1 ,我需要截止到34 我创建了一个示例数据框,类似于上面上传的数据。

df = pd.DataFrame()
df['HomeTeam'] = ['A','B','C','D','E','F','G','H','I','J','A','B','C','D','E','F','G','H','I','J','A','B','C','D','E','F','G','H','I','J','A','B','C','D','E','F','G','H','I','J']
df['Div'] = ['E1','E1','E2','E2','E3','E3','E4','E4','E5','E5','E1','E1','E2','E2','E3','E4','E4','E4','E5','E5','E1','E1','E2','E2','E3','E4','E4','E4','E5','E5','E1','E1','E2','E2','E3','E4','E4','E4','E5','E5']

预期输出如下:

df['GW'] = ['1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2',
            '1','2']

在简单数据框上方

有人可以建议这样做吗? 谢谢。

0 个答案:

没有答案