Если перегнать весь срез в строки и запустить dropna('1').str.isnumeric() то он вернётся True только для тех ячеек, в которых был int или none, который мы заменили на 1
select agreement_id, amount, date from ( select agreement_id, amount, date, row_number() over (partition by agreement_id order by date desc) as rn from agreements ) as t where rn = 1