我有一个如下类型的数据框。
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
基于数据框架列中虚数的元素。
不如创建一个函数来遍历一个掩码列表?
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