如何 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'])
我试图在Pandas中提取满足多个条件的系列,即使用布尔运算符过滤数据,基于
这行得通,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().
答案 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'])