Просто сгруппировать по городам, а затем отсортировать по закрывающему значению (я только что добавил два столбца метрики, надеюсь, что все в порядке, так как у меня нет подробностей, что такое метрика)
df2 = df.groupby(['city']).mean()
input1 = 10
input2 = 5
df_sort = df2.iloc[((df2['metric 1']-input1)+(df2['metric 2']-input2)).abs().argsort()]