迭代地将运算应用于列中具有相同值的行组

时间:2019-06-05 15:32:10

标签: python pandas dataframe physics

这有点奇怪,我正在尝试基于以下条件来门控数据:

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集合。

我可以看到如何通过直接遍历行来做到这一点,但是我想知道是否有一种更有效的方式(例如矢量化)来实现它。

谢谢!

0 个答案:

没有答案