我有一个包含体育比赛的熊猫数据框:
Winner Loser
A B
B A
A C
我想要每个球员(即A,B和C)的输赢统计数据。因此对于A,结果应为2-1。对于B,它应该是1-1,对于C,它应该是0-1。
我知道如何通过在数据框上逐行迭代来计算此值:
for index, match in df.iterrows():
//code for calculating win-loss here
但我确信还有更多的pythonic / pandas-ish方式可以做到这一点?任何提示对此表示赞赏。
您可以将groupby
方法与size
聚合一起使用来执行此操作
例如
print df.groupby('Loser').size()
将产生一个包含损失数量计数的数据帧。
Loser
A 1
B 1
C 1
dtype: int64
然后,您可以按以下方式将它们合并到得分计数中(fillna
如果球队没有胜利或失败,则使用该方法设置默认值)
wins = df.groupby('Winner').size()
losses = df.groupby('Loser').size()
scores = pd.DataFrame({'Wins' : wins, 'Losses' : losses}).fillna(0)
最终得分为:
Losses Wins
A 1 2
B 1 1
C 1 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句