我需要选择满足以下条件的行:
我尝试过:
df[(df[X']==True & df['Z']==False) | (df['X']==False & df['Z']==True)]
但出现以下错误:
ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。
我尝试如下使用any()
答案 0 :(得分:0)
df['X']==True & df['Z']==False
必须为(df['X']==True) & (df['Z']==False)
(以及其他所有内容)。在Python中,运算符&
的优先级高于==
。您的表情将被解释为df['X']==(True & df['Z'])==False
。
答案 1 :(得分:0)
如果您的所有值都是条件中的布尔值,则可以尝试
df[(df['X'] & ~df['Z']) | (~df['X'] & df['Z'])]
答案 2 :(得分:0)
检查
df[((df['X']==True) & (df['Z']==False)) | ((df['X']==False) & (df['Z']==True))]
这里还有一点数学
df[df.X.astype(int).add(df.Z.astype(int)==1]
来自Achampion
df[df.X!=df.Z]
答案 3 :(得分:0)
如果X和Y仅包含True和False,则下面将给出答案(请检查How do you get the logical xor of two variables in Python?):
df[df['X']!=df['Z']]