Python 布尔索引中的行为或条件

Python 布尔索引中的行为或条件,python,pandas,Python,Pandas,这是我试图从df中获取值的“或”部分。我想让它做的是在条件的第一部分为true时获取值,如果不是,则从条件的第二部分获取值。这似乎没有发生,因为订单似乎对我的df的更改没有影响 (df[colA] == row[colA]-1) | (df[colA] == row[colA]-2) 到底发生了什么?有没有办法得到我想要的信息 编辑:or条件是几个布尔条件之一,是较大函数的一部分。但这里的A专栏说明了我的问题。我需要返回一个,如果没有一个匹配负1的A,从两个返回值。我使用了相同的代码和函数将值

这是我试图从df中获取值的“或”部分。我想让它做的是在条件的第一部分为true时获取值,如果不是,则从条件的第二部分获取值。这似乎没有发生,因为订单似乎对我的df的更改没有影响

(df[colA] == row[colA]-1) | (df[colA] == row[colA]-2)
到底发生了什么?有没有办法得到我想要的信息

编辑:or条件是几个布尔条件之一,是较大函数的一部分。但这里的A专栏说明了我的问题。我需要返回一个,如果没有一个匹配负1的A,从两个返回值。我使用了相同的代码和函数将值往回抓取一行,当没有间隙时效果很好

A  B
1  x
2  y
3  z
5  aa
6  bb
这里有一个更好的例子。这类似于我用来为改变df的函数获取值的数组。我搞不懂

a、 )如何确定值是从一行还是从两行移动

b、 )如何编写代码,这样当一个为真时,我可以默认为一行,而当一个为非真时,我只能执行两行

values=df_bkp[(df_bkp['B']==row['B'])&((df_bkp['A']==row['A']-1)|(df_bkp['A']==row['A']-2))][col].values
当我这样做时,我了解这些值的来源:

values=df_bkp[(df_bkp['B']==row['B'])&(df_bkp['A']==row['A']-1)][col].values

我相信您可能使用了错误的“或”运算符。在Python中,它只是“或”


df[colA]==行[colA]-1

这将逐个元素比较两列,并生成类似布尔值的列

True
True
False
True
...
右部分相同,因此在这两个操作之后,您将得到两个布尔向量,例如:

True        True
True        False
False       True
True        True
...         ...
|
运算符对这两个向量进行逐元素比较:

True   or   True    =   True
True   or   False   =   True
False  or   True    =   True
True   or   True    =   True
...    or   ...     =   ...

你能发布一些输入和输出的例子吗?很难说这应该是什么样子。你已经有了b):
False或True
equals
True
True或False
equals
True
@hellpanderr你是在暗示我的第一个值公式应该根据我在or语句中放置条件的哪一方给出不同的结果吗?不管顺序如何,我都得到了同样的结果:行中的值小于2,即使一行中有一个值为1,您是否可以用实际数据发布一些示例?我不认为这是问题所在,因为这是一个
pandas
问题,对象是值的列/向量,您可以使用
|
或运算符逐元素进行比较。但在索引时它会获取什么值?换句话说,如果我只是测试一个面,如果为真,我将得到对应于该行的值。因为双方都可能是真的,而其中一方总是真的,那么将选择哪一行的值?您需要扩展您的示例,我不能这样理解它。进行索引时,将布尔向量插入数据帧,它返回向量具有
True
值的行。添加了更好的示例。我想。
True   or   True    =   True
True   or   False   =   True
False  or   True    =   True
True   or   True    =   True
...    or   ...     =   ...