如何 return 满足 Pandas 中多个条件的布尔系列使用列名称的括号表示法

How to return Boolean series meeting multiple conditions in Pandas using bracket notation for column names

我试图在Pandas中提取满足多个条件的系列,即使用布尔运算符过滤数据,基于,但我需要使用括号列表示法. (Python 3.7)

这行得通,returns [index, Boolean]:

mySeries = data['myCol'] == 'A'

这两个 return 错误:

mySeries = (data['rank'] == 'A' or data['rank'] == 'B')
mySeries = (data['rank'] == 'A' | data['rank'] == 'B')

第二个 returns ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 答案 似乎解决了一个数据帧的错误,而不是一个系列。第二次尝试 return 出现此错误:TypeError: Cannot perform 'ror_' with a dtyped [object] array and scalar of type [bool]

我使用括号表示法 df['rank'] 而不是圆点表示法 df.rank 因为在圆点表示法中, Pandas 将列名与 rank method.[=21 混淆=]

根据@unutbu here 的回答,这是正确的表示法,问题是每个条件都需要放在自己的括号中:

mySeries = (data['rank'] == 'A') | (data['rank'] == 'B')

我们可以做到isin

mySeries = (data['rank'].isin(['A','B'])