Как в pandas выбрать строки, где col1 больше 1 и меньше 3?

Фильтрация DataFrame двумя строгими условиями: булева маска, оператор & и скобки. Показываем результат для исходных трех строк без изменения индекса.

Короткий ответ

Что ответить на собеседовании

Используйте df.loc[(df['col1'] > 1) & (df['col1'] < 3)]. Условия объединяются поэлементным &, каждое сравнение заключается в скобки. Для исходных строк [1, 'A'], [2, 'B'], [3, 'C'] останется только строка с индексом 1: col1 = 2, col2 = 'B'. Значения на границах 1 и 3 исключаются.

Подробный разбор

Ответ с пояснениями

Условие

Дан DataFrame. Нужно выбрать строки, в которых значение col1 строго больше 1 и строго меньше 3.

import pandas as pd

df = pd.DataFrame(
    [[1, 'A'], [2, 'B'], [3, 'C']],
    columns=['col1', 'col2'],
)

Решение

result = df.loc[(df['col1'] > 1) & (df['col1'] < 3)]
print(result)

Вывод:

   col1 col2
1     2    B

Первая маска равна [False, True, True], вторая — [True, True, False]. Поэлементное пересечение дает [False, True, False], поэтому остается только вторая строка исходного набора. Ее индекс по-прежнему равен 1: фильтрация сама не перенумеровывает строки.

Частые ошибки

Для объединения Series нельзя использовать обычный Python-оператор and: он пытается получить одно логическое значение объекта, а здесь нужна отдельная проверка для каждой строки. Нужен &, причем сравнения следует заключать в скобки из-за приоритетов операторов.

Не заменяйте строгие сравнения на >= и <=: тогда в результат попадут граничные значения, что противоречит условию. Если после отбора действительно требуется индекс от нуля, это отдельная операция result.reset_index(drop=True), а не часть исходной задачи.

Для n строк оба сравнения и фильтрация требуют линейного прохода; булевы маски и результат занимают дополнительную память. Вопросы типов и пропущенных значений нужно оговаривать для более общего входа: в данном примере col1 содержит обычные целые числа. Механизм описан в документации pandas: boolean indexing.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку