+------------+-----+--------+-----+-------------+
| Meth.name | Min| Max |Layer| Global name |
+------------+-----+--------+-----+-------------+
| DTS | 2600| 3041.2 | AC1 | DTS |
| GGK | 1800| 3200.0 | AC1 | DEN |
| DTP | 700 | 3041.0 | AC2 | DT |
| DS | 700 | 3041.0 | AC3 | CALI |
| PF1 | 2800| 3012.0 | AC3 | CALI |
| PF2 | 3000| 3041.0 | AC4 | CALI |
+------------+-----+--------+-----+-------------+
Мы должны отбросить дублированные строки в столбце «Глобальное имя», но определенным образом: мы хотим выбрать строку, которая даст наибольшее пересечение с диапазоном, рассчитанным с использованием максимального значения столбца "Min"
и минимального значенияесли столбец "Max"
из недублированных строк . В приведенном выше примере этот диапазон будет [2600.0;3041.0], поэтому мы хотим оставить только строку с ['Meth.name] == 'DS'
, и общий результат должен быть таким:
+------------+-----+--------+-----+-------------+
| Meth.name | Min| Max |Layer| Global name |
+------------+-----+--------+-----+-------------+
| DTS | 2600| 3041.2 | AC1 | DTS |
| GGK | 1800| 3200.0 | AC1 | DEN |
| DTP | 700 | 3041.0 | AC2 | DT |
| DS | 700 | 3041.0 | AC3 | CALI |
+------------+-----+--------+-----+-------------+
Эта проблема, конечно, может быть решена в несколько итераций (вычислить интервал на основе недублированныхстроки, а затем итеративно выбирайте только те строки (из дублированных), которые дадут наибольшее пересечение), но я пытаюсь найти наиболее эффективный подход. Спасибо