Python 布尔索引中的行为或条件
这是我试图从df中获取值的“或”部分。我想让它做的是在条件的第一部分为true时获取值,如果不是,则从条件的第二部分获取值。这似乎没有发生,因为订单似乎对我的df的更改没有影响Python 布尔索引中的行为或条件,python,pandas,Python,Pandas,这是我试图从df中获取值的“或”部分。我想让它做的是在条件的第一部分为true时获取值,如果不是,则从条件的第二部分获取值。这似乎没有发生,因为订单似乎对我的df的更改没有影响 (df[colA] == row[colA]-1) | (df[colA] == row[colA]-2) 到底发生了什么?有没有办法得到我想要的信息 编辑:or条件是几个布尔条件之一,是较大函数的一部分。但这里的A专栏说明了我的问题。我需要返回一个,如果没有一个匹配负1的A,从两个返回值。我使用了相同的代码和函数将值
(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
equalsTrue
,True或False
equalsTrue
@hellpanderr你是在暗示我的第一个值公式应该根据我在or语句中放置条件的哪一方给出不同的结果吗?不管顺序如何,我都得到了同样的结果:行中的值小于2,即使一行中有一个值为1,您是否可以用实际数据发布一些示例?我不认为这是问题所在,因为这是一个pandas
问题,对象是值的列/向量,您可以使用|
或运算符逐元素进行比较。但在索引时它会获取什么值?换句话说,如果我只是测试一个面,如果为真,我将得到对应于该行的值。因为双方都可能是真的,而其中一方总是真的,那么将选择哪一行的值?您需要扩展您的示例,我不能这样理解它。进行索引时,将布尔向量插入数据帧,它返回向量具有True
值的行。添加了更好的示例。我想。
True or True = True
True or False = True
False or True = True
True or True = True
... or ... = ...