这有点奇怪,我正在尝试基于以下条件来门控数据:
1)的列中的值在一定范围内的数字AND
2)与第一个相同的组中的其他行也具有不同的数字范围
为了明确起见,我有一列数据“ tof”,另一列名为“ id”,将同一行中的行分组在一起。我想比较来自同一事件(具有相同ID)的行,看看其中一行是否具有一定范围内的tof,而其他行之一具有不同范围内的tof。如果是这样,我想保留所有具有该id的行,如果不是,我想扔掉那些行。
tof id
9 2004847.0 10.0
10 2066116.0 10.0
11 5441996.0 10.0
12 5642443.0 10.0
17 1979815.0 15.0
18 1992399.0 15.0
19 2008208.0 15.0
20 2098060.0 15.0
21 3980280.0 15.0
我将这样存储范围:
min 1 , max 1 , min 2 , max2
channelBounds = np.array([[2000000,3000000,5000000,6000000],
[1000000,2000000,4000000,5000000]])
其中每行的前两个数字是数据行之一的最小值和最大值,后两个是具有相同id的另一行数据的最小值和最大值。希望我能够遍历多组边界,如图所示。
例如,使用上述数据和约束,第9行和第11行适合第一个约束(9在2000000至3000000之间,而11在5000000至6000000之间),因此我将保留ID为10的行, ID为15的行适合任一约束(ID为15的两行都不能同时满足两个约束范围的值),因此它将删除ID为15的行。
具有两行约束的想法是,可以同时应用多个门,并且将保留满足列出的任何集合的id集合。
我可以看到如何通过直接遍历行来做到这一点,但是我想知道是否有一种更有效的方式(例如矢量化)来实现它。
谢谢!