在条件列表上施加OR(掩码) python pandas

问题描述 投票:0回答:1

我有一个如下类型的数据框。

                  dummy1  dummy2  dummy3  ...  dummy8  dummy9  dummy10
Date       ID                             ...                        
1998-01-01 X       1        NaN      NaN  ...     NaN     NaN     NaN
           Y       1        NaN      NaN  ...     NaN     NaN     NaN
1998-01-02 X       NaN      NaN      NaN  ...     NaN     NaN     NaN
           Y       NaN      NaN      NaN  ...     NaN     NaN     NaN
1998-01-05 X       NaN      NaN      NaN  ...     NaN     NaN     NaN
                   ...      ...      ...  ...     ...     ...     ...
2016-12-27 Y       NaN        1      NaN  ...     NaN     NaN     NaN
2016-12-28 X       NaN        1      NaN  ...     NaN     NaN     NaN
           Y       NaN      NaN      NaN  ...     NaN     NaN     NaN
2016-12-29 X       NaN      NaN      NaN  ...     NaN     1       NaN
           Y       NaN      NaN      NaN  ...     NaN     1       NaN

现在,我有一个布尔系列的列表,它们对应于上面数据框的指定掩码,我称之为 mask. 这意味着 mask 包含了若干元素(特别是:数据框架的每一个虚体都有一个),其类型为,比如。mask[0] 这就是。

Date        Index
 1998-01-01  X      True
             Y      True
 1998-01-02  X     False
             Y     False
 1998-01-05  X     False
                      ...  
 2016-12-27  Y     False
 2016-12-28  X     False
             Y     False
 2016-12-29  X     False
             Y     False

现在,不管我是怎么建立的 mask 系列(如果数据框中对应的虚数为1,则它们为True),我想应用以下命令。

df_new=df[masks[0] | masks[1] | masks[2] | masks[3] | masks[4] | masks[5] | masks[6] | masks[7] | masks[8] | masks[9]]

意思是我想应用列表中的所有掩码。mask 和OR操作符,同时在我的数据框架上进行。df. 我如何用 "自动 "的方式来做,而不需要手动指定所有的元素。mask? 这对我来说是非常重要的,我希望能够将这部分内容 "自动化",作为一个函数的一部分,创建一些不同的功能。mask 基于数据框架列中虚数的元素。

python pandas dataframe conditional-statements mask
1个回答
1
投票

不如创建一个函数来遍历一个掩码列表?

def filter_many_or(list_of_masks):
    aggregate_mask = list_of_masks[0]

    for mask in list_of_masks[1:]:
        aggregate_mask = aggregate_mask | mask

    return aggregate_mask
© www.soinside.com 2019 - 2024. All rights reserved.