根据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约定。有关详细说明,请参见熊猫文档中的此处。