在熊猫中创建淘汰赛比赛

时间:2018-06-28 08:54:20

标签: python pandas dataframe

我正在为足球比赛创建淘汰赛。

df = pd.DataFrame()
df['Team1']   = ['A','B','C','D','E','F']
df['Score1']  = [1,2,3,1,2,4]
df['Team2']   = ['U','V','W','X','Y','Z']
df['Score2']  = [2,1,2,2,3,3]
df['Match']   = df['Team1']  + ' Vs '+ df['Team2']
df['Match_no']= [1,2,3,4,5,6]
winner = df.Score1>df.Score2
df['winner']  = np.where(winner,df['Team1'],df['Team2'])
df ['Stage']  ='R16

可以说,上面的代码用于淘汰赛阶段。通过运行上述代码,我们为每场比赛赢得了一名(6名)。每个匹配项均编号为1,2,3,依此类推。

我要做的是为下一阶段的比赛创建另一个日期框架。 在下一阶段,我们将进行3场比赛。 在这些比赛中,将出现奇数比赛号码和偶数比赛号码的获胜者(即,U vs B,C vs X,Y vs F) 我只需要团队加入新的数据框架。 谁能建议我如何选拔那些队伍?

谢谢

Zep

2 个答案:

答案 0 :(得分:2)

请尝试

df1=pd.DataFrame()
df1['Team1']=df.loc[0::2,'winner'].values
df1['Team2']=df.loc[1::2,'winner'].values

答案 1 :(得分:1)

您可以使用列表切片some_list[start:stop:step]

winners_list = df['winner'].tolist()
df1 =  pd.DataFrame()
df1['Team1'] = winners_list[0::2]
df1['Team2'] = winners_list[1::2]
  • df中的获胜者列为列表(您也可以将pandas.core.series.Series用作切片,但是使用切片来创建数据框时,会因为索引而面临问题)
  • 创建一个新的数据框,并将获胜者列表中索引均匀的元素作为Team1
  • 将获胜者列表中被索引的奇数元素作为Team2。