所以我有一个看起来像这样的数据框 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
添加回答
举报
0/150
提交
取消