s = pd.Series([100, 150, 300])
s.between(100, 300)
Результат:
0 True 1 True 2 True dtype: bool
s = pd.Series([100, 150, 300])
s.between(100, 300, inclusive='neither')
Результат:
0 False 1 True 2 False dtype: boolПорешать Python-задачи в тренажёре →
Фильтрация по числовым и датовым диапазонам: суммы заказов, возраст, окно дат. Часто заменяет громоздкое двойное сравнение в df[df['amount'].between(a, b)].
По умолчанию inclusive='both', то есть обе границы входят: значение, равное left или right, даёт True. Чтобы исключить обе — 'neither', чтобы только одну — 'left' или 'right'. Это удобнее, чем вручную менять >= на > в двойном сравнении.
Для NaN результат всегда False, потому что пропуск не сравним ни с какой границей. Значит такие строки просто не попадут в отфильтрованную выборку. Если пропуски нужно учесть отдельно, обработай их до фильтра через fillna или отдельную маску isna().
Да, between работает с любым упорядоченным типом: datetime, числа и даже строки (лексикографически). Для дат передавай границы как строки или Timestamp — pandas сравнит их корректно, если колонка имеет тип datetime. Это частый способ отфильтровать период дат.
Pandas: основы · NumPy векторизация
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →