假设您有一个Pandas 系列对象的列表,每个系列都是布尔值dtype
:
boolean_series_list = [s1, s2, s3, ..., sn]
您有另一个序列s
,它的索引与boolean_series_list
中的所有布尔序列相同,并且您希望对它进行索引,以便只返回True
出现在boolean_series_list
中序列的对应索引any处的值.你怎么做到的?
我知道|
运算符可以用来组合这样的序列:
s[s1|s2]
但是,如何在不手动将其扩展到s[s1|s2|s3|...|sn]
个系列的情况下,为这类系列的整个列表做到这一点?类似于:
cond = boolean_series_list[0]
for series in boolean_series_list[1:]:
cond = cond | series
s[cond]
工作,但考虑到Pandas为与布尔系列交互提供的典型的整洁的高级接口,比如首先使用布尔运算符|
和其他,它似乎相对笨拙,即使Series对象并不是实际的布尔值.对于Python中的实际布尔值,您可以只使用内置的any()
函数,但any(boolean_series_list)
返回:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
那么,对于Pandas 对象来说,有没有相当于any()
的整齐的东西呢?
对于&
运算符也有类似的问题,对于实际的布尔值,它由内置的all()
提供服务,依此类推.