【问题标题】:Creating knock out tournament matches in Pandas在 Pandas 中创建淘汰赛比赛
【发布时间】:2018-06-28 19:20:16
【问题描述】:

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

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) 我只需要团队进入新的数据框。 谁能告诉我如何提取这些团队?

谢谢

泽普

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    请尝试,

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

    【讨论】:

    • 嗨@pyd,如果我想通过groupby建立团队,我该如何申请?
    • 根据什么条件?你能用你的 df 和预期的 df 创建一个新问题吗
    • 嗨,pyd,下面是链接:stackoverflow.com/questions/51095006/…
    【解决方案2】:

    可以使用列表切片,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。

    【讨论】:

    • 谢谢迪内什。非常感谢您的建议。
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2012-04-05
    • 2013-02-04
    相关资源
    最近更新 更多