我有一个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']
在简单数据框上方
有人可以建议这样做吗? 谢谢。