Skip to main content
 首页 » 编程设计

python之合乎逻辑或在 Pandas 面具 list 上

2025年05月04日33zhenyulu

我有一个 bool 掩码列表,该列表是通过将不同的搜索条件应用于数据框而获得的。这是一个包含 4 个掩码的示例列表:

mask_list = [mask1, mask2, mask3, mask4] 

我想找到列表中所有掩码的逻辑或。换句话说,

or_mask = mask_list[0] | mask_list[1] | mask_list[2] | mask_list[3] 

对于包含任意数量掩码的列表,是否有一种紧凑的方法来完成此操作?我知道我可以编写一个 for 循环,如下所示,但是有没有更短、更 pythonic 的方法来做到这一点?

for i in range(len(mask_list)): 
    if i == 0: 
        temp_mask_or = mask_list[i] 
    else: 
        temp_mask_or = temp_mask_or | mask_list[i] 

请您参考如下方法:

你可以使用减少:

or_(x,y) 表示 x|y 所以这会起作用:

from operator import or_ 
or_mask = reduce(or_,mask_list) 

编辑:正如 JoeCondron 所建议的,您可以使用 numpy.logical_or 而不是 operator.or_ ,它给出相同的结果但速度更快。