为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 理解根据两个条件更改行值

Pandas 理解根据两个条件更改行值

动漫人物 2023-09-19 13:56:41
由 Bruno0 解决。答案如下,评论中有其他修复。我留下了问题的描述,但将更正后的代码放在代码块中以供参考。我有一个用 NFL 球员的梦幻得分刮过的框架。nfl_frame该表按以下顺序排序:- 周按升序排列- 位置按此顺序 QB->RB->WR->TE->K-> 防守- 得分按降序排列它看起来像这样,但有更多的球员和行:周名称 Fanduel_Points1 威尔逊、拉塞尔 31.781 罗杰斯、亚伦 30.761 艾伦、乔什 28.181 杰克逊、拉马尔 27.501 穆雷、凯勒 27.301 卡马拉、阿尔文 31.001 埃利奥特、泽克 30.002 费城 1.002 杰克逊维尔 0.002 辛辛那提 -2.002 底特律 -3.002 达拉斯 -3.00我想做的是添加一个包含玩家位置的列。由于周和点排序是一致的,我想我可以编写一个列表理解来检查得分是否高于前一行,并沿着位置列表迭代以在发生这种情况时添加标签。然后,当一行的周数高于前一行时,我们将重置索引以再次从 QB 开始。代码如下所示:##writing comprehension to perform task listed above#creating empty list that I will add each position toResult = ['QB']#list of positionsPositions = list(['QB','RB','WR','TE','Def'])def add_position(df):    #creating list of my positions    #setting index as 0 to start with QB    Role = 0    #loop checking for week number and points scored    for i in range(1,len(df)):        #if week for new row matches week for last row, and points for new row <= last row, then same position as last row        if df.Week[i]== df.Week[i-1] and df.Fanduel_Points[i]<= df.Fanduel_Points[i-1]:            Result.append(Positions[Role])        #if week for new row matches week for last row, and points for new row > last row, then next position in list        elif df.Week[i] == df.Week[i-1] and df.Fanduel_Points[i] > df.Fanduel_Points[i-1]:            Role +=1            Result.append(Positions[Role])        #if new week, reset and begin from Positions[0] to begin labeling as QB again        elif df.Week[i] > df.Week[i-1] :            Role = 0            Result.append(Positions[Role])#running my comprehension on the frameadd_position(nfl_frame)#apply add_position to my position columnnfl_frame['Position'] = Result
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

Role 用作 List Position 的索引,但不受限制。

因此,如果在给定的一周内,您有超过 6 行且 Fanduel_Price 始终增加的行,如本行所示

elif df.Week[i] == df.Week[i-1] and df.Fanduel_Price[i] > df.Fanduel_Price[i-1]:

然后 Role 的值达到 6,您会得到该索引超出范围的错误。

您可以按如下方式限制 Role 的增加

Role=min(Role+1, len(Positions)-1)


查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 40 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信