【发布时间】:2018-12-08 06:02:18
【问题描述】:
我有一个如下的DataFrame:
df = pd.DataFrame()
df['Team1'] = ['A','B','C','D','E','F','A','B','C','D','E','F']
df['Score1'] = [1,2,3,1,2,4,1,2,3,1,2,4]
df['Team2'] = ['U','V','W','X','Y','Z','U','V','W','X','Y','Z']
df['Score2'] = [2,1,2,2,3,3,2,1,2,2,3,3]
df['Match'] = df['Team1'] + ' Vs '+ df['Team2']
df['Match_no']= [1,2,3,4,5,6,1,2,3,4,5,6]
df['model'] = ['ELO','ELO','ELO','ELO','ELO','ELO','xG','xG','xG','xG','xG','xG']
winner = df.Score1>df.Score2
df['winner'] = np.where(winner,df['Team1'],df['Team2'])
我想做的是为下一阶段的锦标赛创建另一个日期框架。在下一阶段,我们将为每个模型(ELO 和 xG)进行 3 场比赛。我想按 Model 分组。这些比赛按模型分组,比赛编号 1 和比赛编号 1 的获胜者,比赛编号 3 对比赛编号 4 的获胜者等将进行比赛(即 U 对 B,C 对 X,Y 对 F )。那么谁能告诉我如何提取这些团队?
我预期的新数据框如下:
df1 =pd.DataFrame()
df1['Team1'] = ['U','C','Y','U','C','Y']
df1['Team2'] = ['B','X','F','B','X','F']
df1['Match'] = df1['Team1'] + ' Vs '+ df1['Team2']
df1['Match_no']= [1,2,3,1,2,3]
df1['model'] = ['ELO','ELO','ELO','xG','xG','xG']
我该如何设置?
【问题讨论】:
-
我不明白。为什么需要groupby? previous solution 如果需要对奇数行和偶数行,应该可以工作。仅当某些组的行数不成对时它才应该失败(可能吗?)。还是需要先按
df.groupby('model').head(6)过滤每个组的前 6 行? -
亲爱的杰兹,感谢您的回复。我需要在新数据框中重用模型中的标签。正如我提到的,新的数据框将包含以下列 Team1、Team2、Model。
标签: python pandas pandas-groupby pandas-loc