所以我有一个如下所示的数据框DF:DF:
match_id team teamA_Win Outcome
1 A True None
2 B True None
3 A False None
此df中的结果列填充字符串'None'
我想要的是能够根据team和teamA_win中的值将结果中的字符串值更改为“Win”或“Loss” .
例如,如果Team == A和TeamA_win = True为True,则结果应为Win . 但是,如果Team == A和TeamA_Win = False,则结果为Loss . 同样,如果Team == B且TeamA_Win = True,则结果应为Loss .
我创建了以下功能:
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 回答
您可以使用
np.select
,这将允许您定义条件及其可能的值,如下所示:希望能帮助到你 .
或者两行,使
'Outcome'
列False
,并使用loc
检查'team'
列是否等于'teamA_Win'
用'A'
替换True
和用'B'
替换False
,如果是,则使'Outcome'
列True
:输出: