Я задам вопрос в библиотечной манере c, так как один может быть лучше другого в этом случае. Или, может быть, существует другая волшебная библиотека?
У меня есть таблица БД, содержащая около 10000 записей, и я знаю, как создать из нее массив numpy или фрейм данных. Данные примерно такие.
...
20,25,1,5
20,25,2,3
20,25,4,21
20,25,5,1
20,25,9,19
...
45,47,6,20
45,47,10,2
45,47,11,56
45,47,21,41
...
В приведенных ниже примерах критериев поиска я следую за значением '20' в столбце col4 этой строки.
45,47,6,20
- Обратите внимание на первое 2 столбца имеют одинаковые значения и определяют группу.
- Col2 всегда будет> = col1 в строке.
- Значения в col3 всегда будут в порядке возрастания внутри группы, а не обязательно смежный.
Я следую за значением ячейки в col4, используя следующие критерии поиска.
Я знаю, как использовать маску в numpy, чтобы найти все строки значения которого, например, 'col1> = 45 AND col2 <= 47'. У меня есть третье значение поиска, например, '8', которое должно использоваться для поиска col3 в вышеуказанной группе (col1, col2, 45 -> 47)
Мне нужно найти первую строку, чья значение в col3 <= 8. </strong>
Поэтому мне нужно искать строки, у которых 'col1> = 45 AND col2 <= 47' в последовательности col3 DESCENDING до строки '45, 47,6, 20 'найдено. Я после значения '20' в col4. </p>
Всегда будет только одна строка, которая будет соответствовать. Вполне возможно, что ни одна строка не будет соответствовать критериям (например, если значение поиска в столбце col3 было равно 3).
Мне нужно выполнять 100 с 1000 поисков за раз, поэтому я бы предпочел, чтобы не было новых массивов или фреймов данных. создано, если это не оказывает минимального влияния на ресурсы.