如何根据应用于其他两列的函数更改列中的值

所以我有一个看起来像这样的数据框 DF: DF:


match_id        team        teamA_Win  Outcome

1               A           True        None

2               B           True        None

3               A           False       None

此 df 中的结果列填充有字符串“无”


我想要的是能够根据 team 和 teamA_win 中的值将结果中的字符串值更改为“Win”或“Loss”。


例如,如果 Team == A 且 TeamA_win=True 为 True,则结果应为 Win。但是,如果 Team==A 且 TeamA_Win=False,则结果为输。同样,如果 Team==B 和 TeamA_Win=True 那么结果应该是输。


我创建了以下函数:


def win(x):

    if (x['team']=='A')& (x['teamA_win']==True):

        x['outcome']='Win'

    elif ((x['team']=='A')& (x['teamA_win']==False)):

        x['outcome']='Loss'

    elif ((x['team']=='B')& (x['teamA_win']==True)):

        x['outcome']='Loss'    

    elif ((x['team']=='B')& (x['teamA_win']==False)):

        x['outcome']='Win'   

但是,现在当我调用 win(DF) 时,出现错误:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。


关于如何解决这个问题的任何想法?或者是否有更简单的方法来处理这种情况?


潇潇雨雨
浏览 162回答 2
2回答

富国沪深

或者一个双衬, make 'Outcome'column False,并用于loc检查'team'column 是否等于'teamA_Win'替换Truewith'A'和Falsewith 'B',如果是,则 make 'Outcome'column True:df['Outcome']=Falsedf.loc[df['team']==df['teamA_Win'].map({True:'A',False:'B'}),'Outcome']=True输出:   match_id team teamA_Win Outcome0         1    A      True    True1         2    B      True   False2         3    A     False   False
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python