Сначала отсортируйте значения, по которым вы хотите отфильтровать самые высокие 90% данных
df.sort_values('score', ascending=False, inplace=True)
Затем вы вычисляете совокупную сумму и делите ее на общую сумму, чтобы выполнить условия фильтрации (вы можете заменить 0.9
на свой пользовательский лимит)
df = df[df['score'].cumsum() / df['score'].sum() < 0.9]
Теперь df
выглядит как
city score
bangkok 60
kl 20
sydney 10