Поскольку интересующими годами являются 2020 и 1990 годы, мы фильтруем только по этим годам, сортируем столбец людей по убыванию, группируем страну и используем numpy вычитаем и numpy уменьшите , чтобы получить разницу:
(df.query('year==[2020,1990]')
.sort_values('people',ascending=False)
.groupby('country',sort=False)
.agg(difference=('people',np.subtract.reduce))
)
difference
country
US 436
UK 295
Обратите внимание, что групповая сортировка не сортируется - это гарантирует, что отсортированные значения не будут изменены (нам нужно, чтобы каждый столбец имел самое высокое в верхней части, чтобы метод вычитания и сокращения в агрегации даст положительные значения)
Для деления:
(df.query('year==[2020,1990]')
.sort_values('people',ascending=False)
.groupby('country',sort=False)
.agg(fst=('people','first'), lst=('people','last'))
.assign(division=lambda x: x.fst.div(x.lst))
)