在熊猫数据框中选择行

时间:2020-09-04 00:01:30

标签: python pandas

我需要选择满足以下条件的行:

  • 如果(X为True,Z为false)| (X为假,Z为真),然后将新列分配为True作为值。

我尝试过:

df[(df[X']==True & df['Z']==False) | (df['X']==False & df['Z']==True)]

但出现以下错误:

ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。

我尝试如下使用any()

4 个答案:

答案 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']]