Series.between() — булева маска для диапазона значений

between возвращает булеву Series, где True стоит там, где значение попадает в интервал между left и right. Это компактная замена связки (s >= a) & (s <= b) с меньшим числом скобок и понятным именем. Аналитику удобно для фильтрации сумм, дат и любых диапазонов прямо внутри boolean-индексации df[...].

Синтаксис

s.between(left, right, inclusive='both')

Примеры использования

Пример 1: Маска попадания в диапазон

s = pd.Series([100, 150, 300])
s.between(100, 300)

Результат:

0    True
1    True
2    True
dtype: bool

Пример 2: Исключить границы через inclusive='neither'

s = pd.Series([100, 150, 300])
s.between(100, 300, inclusive='neither')

Результат:

0    False
1     True
2    False
dtype: bool
Порешать Python-задачи в тренажёре →

Типичная ошибка

С pandas 1.3 параметр inclusive принимает строки 'both'/'neither'/'left'/'right', а старый булев True/False объявлен устаревшим. NaN всегда даёт False. Если left > right, маска будет вся False; границы left/right могут быть и массивами той же длины для поэлементного сравнения.

Где спрашивают на собеседовании

Фильтрация по числовым и датовым диапазонам: суммы заказов, возраст, окно дат. Часто заменяет громоздкое двойное сравнение в df[df['amount'].between(a, b)].

FAQ: частые вопросы про between

between включает границы?

По умолчанию inclusive='both', то есть обе границы входят: значение, равное left или right, даёт True. Чтобы исключить обе — 'neither', чтобы только одну — 'left' или 'right'. Это удобнее, чем вручную менять >= на > в двойном сравнении.

Что вернёт between для NaN?

Для NaN результат всегда False, потому что пропуск не сравним ни с какой границей. Значит такие строки просто не попадут в отфильтрованную выборку. Если пропуски нужно учесть отдельно, обработай их до фильтра через fillna или отдельную маску isna().

Работает ли between с датами и строками?

Да, between работает с любым упорядоченным типом: datetime, числа и даже строки (лексикографически). Для дат передавай границы как строки или Timestamp — pandas сравнит их корректно, если колонка имеет тип datetime. Это частый способ отфильтровать период дат.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы · NumPy векторизация

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →