Найти тему
597 подписчиков

Интеллектуальная выборка колонок датафрейма

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье. В качестве критериев для интеллектуальной выборки возьмем соответствие их имен и типов неким правилам.

В демонстрационных целях будем использовать следующий датафрейм:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.

Для селекции по типам рассмотрим два способа. Первый - использование функции NumPy where:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-2

np.where выбирает кортеж индексов (по всем измерениям) ненулевых элементов массива. Аналогичное поведение - с помощью метода nonzero:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-3

Однако это не самый оптимальный способ выборки колонок по типам, так как для этого можно использовать метод датафрейма select_dtypes:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-4

При этом можно, как включать определенные типы с параметром include, так и исключать через exclude:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-5

Для выборки столбцов по именам рассмотрим опять же два способа. Первый - это включение элементов атрибута columns, которые удовлетворяют некому условию (например, имеют подстроку "old"):

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-6

Однако есть и более простой способ - метод filter:

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-7

Как можно заметить, с использованием параметра regex можно задать регулярное выражение, которому должны удовлетворять имена колонок.

Хватит тратить время на ручное извлечение столбцов по их именам или индексам, пора пользоваться более продвинутыми механизмами, о которых и пойдет речь в этой статье.-8