У меня есть следующий датафрейм.
+------------------+---+----------+-----+-------+
|amount_outstanding| id| type|yield|tenorID|
+------------------+---+----------+-----+-------+
| 1200000| c1| corporate|5.30%| 10.3|
| 2500000| g1|government|3.70%| 9.4|
| 1100000| c2| corporate| null| 13.5|
| 1750000| g2|government|4.80%| 12.0|
+------------------+---+----------+-----+-------+
Я ищу наиболее близкое совпадение для данного типа corporate
для government
на основе разницы в tenorID
. если разница больше чем для одного наибольшего amount_outstanding
, то следует выбрать один для совпадения.
ожидаемый результат
+------------------+---+----------+-----+-------+---------+
|amount_outstanding| id| type|yield|tenorID| id_match|
+------------------+---+----------+-----+-------+---------+
| 1200000| c1| corporate|5.30%| 10.3| g1 |
| 1100000| c2| corporate| null| 13.5| g2 |
| 2500000| g1|government|3.70%| 9.4| null|
| 1750000| g2|government|4.80%| 12.0| null|
+------------------+---+----------+-----+-------+---------+
Есть ли способ, которым я могу добиться этого с помощью оконной функции или мне просто нужно сделать перекрестное соединение и найти разницу, а затем отфильтровать ее. ?