根据Pandas Python中的两个条件选择数据框的行


问题内容

我有一个df,并且我想运行以下命令:

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

选择“项目描述”列的子字符串为“ X”或“ Y”的所有行。

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

运行该错误时出现错误。有什么帮助吗?


问题答案:

使用|代替or。所以:

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

or运营商希望比较两个布尔值(或两个表达式计算结果为真或假)。但是,一个Series(或numpy数组)不仅会求值为True或False,而且在这种情况下,我们想对两个Series逐个元素进行比较。为此,您可以使用|“按位或”。

熊猫遵循numpy约定。有关详细说明,请参见熊猫文档中的此处