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

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

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

潇潇雨雨 2021-09-11 15:43:32
所以我有一个看起来像这样的数据框 DF: DF:match_id        team        teamA_Win  Outcome1               A           True        None2               B           True        None3               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()。关于如何解决这个问题的任何想法?或者是否有更简单的方法来处理这种情况?
查看完整描述

2 回答

?
富国沪深

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

或者一个双衬, make 'Outcome'column False,并用于loc检查'team'column 是否等于'teamA_Win'替换Truewith'A'和Falsewith 'B',如果是,则 make 'Outcome'column True:


df['Outcome']=False

df.loc[df['team']==df['teamA_Win'].map({True:'A',False:'B'}),'Outcome']=True

输出:


   match_id team teamA_Win Outcome

0         1    A      True    True

1         2    B      True   False

2         3    A     False   False


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

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