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

2024-04-29 07:15:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测向仪,我想运行如下程序:

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

它选择具有Item Desc列的所有行,子字符串为“X”或“Y”。

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

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


Tags: orofthe字符串程序truedfvalue
2条回答

条件如下

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

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

使用|而不是or。所以:

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

or运算符希望比较两个布尔值(或两个计算结果为True或False的表达式)。但是序列(或numpy数组)的计算结果并不简单地为True或False,在本例中,我们希望对这两个序列元素进行比较。为此,可以使用|,称为“按位或”。

熊猫遵循着这里的习俗。有关解释,请参见熊猫文档中的here

相关问题 更多 >