基于python中的两个条件选择数据帧的行

基于python中的两个条件选择数据帧的行,python,pandas,Python,Pandas,我有一个df,我想运行类似于: subsetdf= df.loc[(df['Item_Desc'].str.contains('X')==True) or \ (df['Item_Desc'].str.contains('Y')==True ),:] 它选择所有具有“X”或“Y”子字符串的项描述列的行 当我运行它时,我得到了错误。有什么帮助吗?用|代替或。因此: df.loc[(cond1) | (cond2), :] 或运算符希望比较两个布尔值(或两个计算

我有一个df,我想运行类似于:

subsetdf= df.loc[(df['Item_Desc'].str.contains('X')==True) or \
                 (df['Item_Desc'].str.contains('Y')==True ),:]
它选择所有具有“X”或“Y”子字符串的项描述列的行


当我运行它时,我得到了错误。有什么帮助吗?

|
代替
。因此:

df.loc[(cond1) | (cond2), :]
运算符希望比较两个布尔值(或两个计算结果为True或False的表达式)。但是序列(或numpy数组)的计算结果并不是简单的True或False,在本例中,我们希望从元素角度对这两个序列进行比较。为此,您可以使用名为“按位或”的
|


熊猫在这里遵循着努比习俗。请参见熊猫文档中的说明。

条件应如下所示

df.loc[(cond1) | (cond2)]

每个条件也必须用括号括起来。括号的优先级高于按位“或”运算符。如果没有提供括号,也会出现同样的错误

您介意为我指出这方面的文档吗?这是熊猫还是蟒蛇?我找不到关于“|”的任何信息@joris,回答得好。有没有更一般的方法?e、 g.如果您有一个列名列表,例如,
['d1'、'd2'、'd3'…]
是否有一种方法指定一个通用条件以应用于所有列,并在其中任何列匹配时包含该行。在我的例子中,cols d1等有1或0,并且在任何一个cols d1等中只需要带1的行。还有其他col,还有其他数据,例如文本,我不考虑这个选择,这不是一般的解决方案,但在这种情况下,您可以做类似于
(df[cols]==1)的事情。任何(axis=1)
用作条件。
df.loc[(cond1) | (cond2)]