Я хочу показать 5 самых популярных запросов по городу, если в городе нет 5 запросов, показать их все.
Фиктивные данные
data = {'city': ['Paris','Berlin','Barcelona', 'Paris', 'Paris', 'Barcelona', 'Barcelona', 'Barcelona', 'Berlin', 'Berlin',\
'Paris','Berlin','Barcelona', 'Paris', 'Paris', 'Barcelona', 'Barcelona', 'Barcelona', 'Berlin', 'Berlin',\
'Paris','Berlin','Barcelona', 'Paris', 'Paris', 'Barcelona', 'Barcelona', 'Barcelona', 'Berlin', 'Berlin',\
'Paris','Berlin','Barcelona', 'Paris', 'Paris', 'Barcelona', 'Barcelona', 'Barcelona', 'Berlin', 'Berlin'],
'query': ['orange', 'pizza', 'pizza', 'pizza', 'apple', 'pizza', 'ricecracker', 'pizza', 'tomato', 'tomato',\
'orange', 'pizza', 'ricecracker', 'ricecracker', 'pineapple', 'pizza', 'ricecracker', 'pizza', 'ricecracker', 'tomato',\
'taco', 'taco', 'pizza', 'pizza', 'pineapple', 'pizza', 'ricecracker', 'pizza', 'tomato', 'tomato',\
'apple', 'taco', 'ricecracker', 'ricecracker', 'pineapple', 'pizza', 'ricecracker', 'pizza', 'ricecracker', 'tomato']
}
df = pd.DataFrame(data, columns = ['city', 'query'])
Желаемый вывод
city query count
Barcelona pizza 10
ricecracker 6
Berlin tomato 6
pizza 2
ricecracker 2
taco 2
Paris pineapple 3
apple 2
orange 2
pizza 2
ricecracker 2
Я пробовал следующее только для одного города, но не знаю, как перевести его в группу:
df[df.city == 'Paris']['query'].value_counts().nlargest(5)