根据Pandas python中的两个条件选择数据帧的行

wol*_*oor 6 python pandas

我有一个df,我想运行类似的东西:

subsetdf= df.loc[(df['Item_Desc'].str.contains('X')==True) or \
                 (df['Item_Desc'].str.contains('Y')==True ),:]
Run Code Online (Sandbox Code Playgroud)

选择具有Item Desc列的子串为"X"或"Y"的所有行.

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 
Run Code Online (Sandbox Code Playgroud)

我运行时遇到错误.有帮助吗?

jor*_*ris 7

|而不是or.所以:

df.loc[(cond1) | (cond2), :]
Run Code Online (Sandbox Code Playgroud)

or运营商希望比较两个布尔值(或两个表达式计算结果为真或假).但是Series(或numpy数组)并不简单地计算为True或False,在这种情况下,我们想要逐个元素地比较两个系列.为此,您可以使用|称为"按位或"的方法.

熊猫遵循这些笨拙的惯例.见这里的大熊猫文档关于它的解释.