Итеративно применять операцию к группам строк с одинаковым значением в столбце - PullRequest
0 голосов
/ 05 июня 2019

Это немного странно, я пытаюсь использовать данные, если:

1) значения в столбце находятся в определенном диапазоне чисел И

2) другие строки в той же группе, что и первая, также имеют другой диапазон чисел

Итак, чтобы уточнить, у меня есть столбец данных 'tof' и другой столбец с именем 'id', который группирует строки, как находящиеся в одном и том же событии. Я хочу сравнить строки из одного и того же события (с тем же идентификатором), чтобы увидеть, имеет ли одна из строк значение tof в определенном диапазоне, а одна из других строк имеет значение tof в другом диапазоне. Если это так, я хочу сохранить все строки с этим идентификатором, а если это не так, я хочу выбросить эти строки.

                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]])

Где первые два числа в каждой строке - это мин и макс одной из строк данных, а вторые два - это мин и макс другой строки данных с тем же идентификатором. Надеюсь, я смогу выполнить итерации по нескольким наборам границ, как показано.

Например, с указанными выше данными и ограничениями строка 9 и строка 11 вписываются в первое ограничение (9 - между 2000000 и 3000000, а 11 - между 5000000 и 6000000), поэтому я бы сохранил строки с идентификатором 10, но ни один из строки с идентификатором 15 соответствуют любому из ограничений (две строки с идентификатором 15 не имеют значений, которые одновременно удовлетворяют обоим диапазонам ограничений), поэтому в этом случае будут удалены строки с идентификатором 15.

Идея с двумя линиями ограничений заключается в том, что несколько шлюзов могут применяться одновременно, и наборы идентификаторов, которые удовлетворяют любому из перечисленных наборов, будут сохранены.

Я могу видеть, как это сделать, перебирая строки напрямую, но мне было интересно, есть ли более эффективный (как векторизованный) способ сделать это.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...