假设您有一个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()提供服务,依此类推.

推荐答案

您可以首先将所有布尔序列收集到一个数据帧中,然后使用any将条件聚合到一个序列中:

cond = pd.concat(boolean_series_list, axis=1).any(axis=1)
s[cond]

要获得与使用链式&运算符相同的结果,您可以类似地使用all而不是any.

Python相关问答推荐

在Pandas框架中截短至固定数量的列

LAB中的增强数组

如何在Deliveryter笔记本中从同步上下文正确地安排和等待Delivercio代码中的结果?

在Pandas DataFrame操作中用链接替换'方法的更有效方法

从groupby执行计算后创建新的子框架

如何更改分组条形图中条形图的 colored颜色 ?

对所有子图应用相同的轴格式

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

对象的`__call__`方法的setattr在Python中不起作用'

如何在Polars中从列表中的所有 struct 中 Select 字段?

Python+线程\TrocessPoolExecutor

什么是最好的方法来切割一个相框到一个面具的第一个实例?

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

如果包含特定值,则筛选Groupby

如何使用正则表达式修改toml文件中指定字段中的参数值

Tensorflow tokenizer问题.num_words到底做了什么?

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

来自Airflow Connection的额外参数

Regex用于匹配Python中逗号分隔的AWS区域

在matplotlib中重叠极 map 以创建径向龙卷风图