我想运行以行作为参数的迭代函数python

问题描述

我有一个函数,将论点分为两个足球队,然后应用泊松分布(具有以前的历史信息),并预测主场和离开的预期目标。代码如下:

    def predictMatchscore(home,away):
if home in eplteamStrength.index and away in eplteamStrength.index:
    lambdH = eplteamStrength.at[home,'HomeAttack'] * eplteamStrength.at[away,'AwayDefense'] * overallHomescored
    lambdA = eplteamStrength.at[away,'AwayAttack'] * eplteamStrength.at[home,'HomeDefense'] * overallAwayscored
    probH,probA,probT = 0,0  # Probability of Home win(H),Away win(A) or Tie(T) 
    for X in range(0,11):
        for Y in range(0,11):
            p = poisson.pmf(X,lambdH) * poisson.pmf(Y,lambdA)
            if X == Y:
                probT += p
            elif X > Y:
                probH += p
            else:
                probA += p
    scoreH = 3 * probH + probT
    scoreA = 3 * probA + probT
    return (scoreH,scoreA)
else:
    return (0,0)

结果如下:

    predictMatchscore('Bayern Munich','Dortmund')
    3.2456343,2.3212355

这意味着,根据以前的历史信息,泊松分布会计算此特定匹配项的得分,如上所示。

问题是我想计算这种分布的有效性。怎么样?好吧,我有一个具有25000个主场和场外比赛的数据框,当然结果已经给出了。但是,我要实现的是将所有匹配项都放入predictMatchscore函数中。并在数据框中添加两个新列,例如:

HomeTeam // AwayTeam //真实比分主场//真实比分远// PredictdHome // PredAw

拜仁//多特蒙德//3//2//3.24//2.32

沙尔克04 //奥格斯堡//2//1//3.45//1.09

法兰克福//Bayer04//1//0//2.34//0.56 ...

依此类推,预测历史数据框中的所有匹配项,然后将预测结果与实际结果进行比较。

因此,要总结一下,我希望该函数采用很多参数,并为每次匹配提供结果。

我希望我能说清楚。谢谢。

解决方法

我知道了:

     H_R=[]
     A_R=[]
     for index,row in season_16_17.iterrows():
         home,away = row['HomeTeam'],row['AwayTeam']
         sH,sA = predictMatchScore(home,away)
         H_R.append(round(sH,2))
         A_R.append(round(sA,2))