Как сделать срез данных по определенному столбцу с типом 'object'?

В DataFrame есть столбец 'locality_name', в котором хранятся названия населенных пунктов. Нужно оставить из них только 10, тех, количество которых больше всего.

Прогнал через value_counts(), определил, каких значений больше, и вручную ввел значения для среза через query():

final_stat = stat.query('locality_name in ("Санкт-Петербург", "посёлок Мурино", "посёлок Шушары", "Всеволожск", "Пушкин", "Колпино", "посёлок Парголово", "Гатчина", "деревня Кудрово", "Выборг", "Петергоф")')

Как можно это автоматизировать, чтобы не вводить нужные значения вручную?


Ответы (1 шт):

Автор решения: MaxU

Попробуйте так:

top10 = df["locality_name"].value_counts().head(10).index
res = df.query("locality_name in @top10")

или так:

res = df.loc[df["locality_name"].isin(df["locality_name"].value_counts().head(10).index)]
→ Ссылка