«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно фильтровать фрейм данных или серию Pandas с несколькими условиями?

Как эффективно фильтровать фрейм данных или серию Pandas с несколькими условиями?

Опубликовано 1 ноября 2024 г.
Просматривать:124

How to Efficiently Filter Pandas DataFrame or Series with Multiple Conditions?

Эффективная фильтрация фрейма или серии данных Pandas с несколькими условиями

Pandas предоставляет ряд методов фильтрации данных, включая reindex(), apply() и map() . Однако при применении нескольких фильтров эффективность становится проблемой.

Для оптимизации фильтрации рассмотрите возможность использования логического индексирования. И Pandas, и Numpy поддерживают логическое индексирование, которое работает непосредственно с базовым массивом данных без создания ненужных копий.

Вот пример логического индексирования:

df.loc[df['col1'] >= 1, 'col1']

Это выражение возвращает серию Pandas, содержащую только строки, в которых значения в столбце col1 больше или равны 1.

To применять несколько фильтров, использовать логические операторы «&» (И) и «|» (ИЛИ). Например:

df[(df['col1'] >= 1) & (df['col1'] <=1 )]

Это выражение возвращает DataFrame, содержащий только те строки, где значения в столбце 'col1' находятся между 1 и 1 включительно.

Для вспомогательные функции, рассмотрите возможность определения функций, которые принимают DataFrame и возвращают логический ряд, что позволяет комбинировать несколько фильтров с помощью логических операторов.

def b(x, col, op, n):
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]

В Pandas 0.13 представлен метод query(), который обеспечивает более эффективный способ выражения сложных условий фильтрации. Предполагая действительные идентификаторы столбцов, следующий код фильтрует DataFrame df на основе нескольких условий:

df.query('col1 <= 1 & 1 <= col1')

Таким образом, логическое индексирование предлагает эффективный метод применения нескольких фильтров к кадрам данных или сериям Pandas без создания ненужных копий. Используйте логические операторы и вспомогательные функции для объединения нескольких фильтров для расширения функциональности.

Заявление о выпуске Эта статья перепечатана по адресу: 1729394837. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3