Полный гайд по фильтрации DataFrame в pandas: булевы маски, операторы & | ~ и почему нужны скобки, isin, between, isna, .str.contains и метод query() для аналит
Это часть 5 из 10 курса «Pandas с нуля для аналитика».
Фильтрация — это то, чем аналитик занимается каждый день. «Покажи заказы из Москвы за последнюю неделю», «выкини отменённые», «оставь только VIP-клиентов» — всё это фильтры. В SQL для этого есть WHERE. В pandas нет одного WHERE — но есть несколько способов фильтровать, и когда ты разберёшься в них, ты сможешь вырезать из таблицы ровно то, что нужно, одной строкой.
Передайте булеву маску в скобках: df[df['age'] > 30]. Несколько условий объединяют через & (и) и | (или), каждое в круглых скобках: df[(df['age'] > 30) & (df['city'] == 'Москва')].
isin удобен для проверки вхождения в список значений: df[df['city'].isin(['Москва','СПб','Казань'])] вместо длинной цепочки == через |. Для исключения добавьте ~ перед маской: df[~df['city'].isin([...])].
query фильтрует строкой-выражением: df.query('age > 30 and city == "Москва"'), что читабельнее при сложных условиях и не требует повторять имя df. Для подстановки переменных используйте @: df.query('age > @min_age').