
Работа с большими наборами данных в pandas часто требует выборки конкретных столбцов для анализа. Прямой доступ к отдельным колонкам позволяет снизить нагрузку на память и ускорить выполнение операций. Для этого достаточно указать список нужных имен столбцов в квадратных скобках или использовать методы loc и iloc.
При работе с DataFrame из нескольких сотен столбцов рекомендуется заранее определить, какие данные нужны для анализа. Например, при обработке данных о продажах полезно извлекать только даты, суммы заказов и идентификаторы клиентов. Это позволяет быстрее строить агрегированные таблицы и графики.
Сохранение выбранных столбцов в новый DataFrame позволяет создавать отдельные таблицы для дальнейшего экспорта или передачи другим аналитическим инструментам. Это особенно важно при подготовке данных для отчётов, визуализаций и машинного обучения, где требуется работать только с релевантной информацией.
Выбор столбцов по имени из DataFrame

Для извлечения отдельных колонок из DataFrame достаточно указать их имена в квадратных скобках. Например, df[[‘column1’, ‘column2’]] возвращает только указанные столбцы, сохраняя порядок, заданный в списке. Это удобно, если нужно подготовить подтаблицу для анализа или визуализации.
Имена столбцов чувствительны к регистру, поэтому ‘Column1’ и ‘column1’ будут рассматриваться как разные колонки. Для удобства работы с большими таблицами можно хранить список нужных столбцов в отдельной переменной и использовать его при выборке: columns_to_select = [‘column1’, ‘column2’], затем df[columns_to_select].
При использовании этого метода DataFrame сохраняет оригинальные индексы строк. Это позволяет сразу выполнять группировки, фильтрацию и агрегирование данных без дополнительной перестройки таблицы. Также можно комбинировать выборку столбцов с методами pandas, например df[[‘column1’, ‘column2’]].sum(), чтобы быстро получить сумму по выбранным колонкам.
Если имя столбца отсутствует в DataFrame, pandas выдаёт ошибку KeyError. Рекомендуется проверять наличие колонок через df.columns или использовать пересечение списков: list(set(columns_to_select) & set(df.columns)), чтобы избежать прерывания скрипта.
Фильтрация столбцов с помощью списка

Для выбора нескольких столбцов из DataFrame можно использовать список с именами колонок. Например, columns_to_keep = [‘date’, ‘sales’, ‘customer_id’] и затем df[columns_to_keep] вернёт только эти столбцы, сохраняя исходный порядок.
Этот подход полезен, когда необходимо динамически формировать подтаблицы. Например, при обработке данных разных магазинов список столбцов можно формировать программно: columns_to_keep = [col for col in df.columns if col.startswith(‘store_’)], что позволяет быстро фильтровать только нужные показатели.
Для защиты от ошибок лучше проверять наличие колонок перед выборкой. Пересечение списков valid_columns = list(set(columns_to_keep) & set(df.columns)) позволяет исключить отсутствующие имена и избежать KeyError. Это особенно актуально при работе с таблицами, структура которых может меняться.
После фильтрации DataFrame сохраняет оригинальные индексы строк, что упрощает последующие операции, например группировку или объединение с другими таблицами. Такой метод совместим с методами агрегации и визуализации pandas без дополнительных преобразований.
Метод loc позволяет одновременно выбирать строки и столбцы по именам. Для извлечения нескольких колонок используется синтаксис df.loc[:, [‘column1’, ‘column2’]], где двоеточие обозначает выбор всех строк, а список задаёт нужные столбцы.
Этот метод особенно полезен, когда необходимо сочетать фильтрацию строк и столбцов. Например, df.loc[df[‘region’]==’North’, [‘date’, ‘sales’]] вернёт только данные по продажам для северного региона, исключая ненужные колонки.
Для динамического выбора колонок список можно формировать программно. Например, columns_to_select = [col for col in df.columns if col.endswith(‘_qty’)] и затем df.loc[:, columns_to_select] позволяет выбрать все столбцы с количеством товаров.
Метод loc сохраняет индексы и порядок строк, что упрощает последующую агрегацию и объединение с другими таблицами. Он также корректно работает с булевыми масками и условиями, что делает его универсальным инструментом для выборки данных в pandas.
DataFrame позволяет обращаться к столбцам через точечный синтаксис: df.column_name. Этот метод удобен для быстрого доступа к одной колонке без использования скобок.
- Создание нового DataFrame с выбранными колонками: df_new = df[[‘column1’, ‘column2’]]
- Использование методов агрегирования на выбранных столбцах: df[[‘column1’, ‘column2’]].mean()
- Фильтрация данных по условиям с последующим выбором столбцов: df[df.column1 > 100][[‘column1’, ‘column2’]]
Важно помнить, что атрибут не поддерживает имена столбцов с пробелами или специальными символами. В таких случаях необходимо использовать скобочный синтаксис df[‘column name’].
Использование атрибута ускоряет работу с кодом при обращении к отдельным колонкам и упрощает чтение скриптов, особенно если имена столбцов короткие и не содержат конфликтующих символов.
Комбинирование столбцов с условиями
Например, можно выбрать даты и суммы заказов только для клиентов с суммой больше 1000:
filtered_df = df.loc[df[‘sales’] > 1000, [‘date’, ‘sales’]]
В таблице ниже показан пример исходного DataFrame и результата фильтрации:
| customer_id | date | sales | region |
|---|---|---|---|
| 101 | 2025-11-01 | 1200 | North |
| 102 | 2025-11-02 | 800 | South |
| 103 | 2025-11-03 | 1500 | East |
Для сложных условий используют логические операторы & (и) и | (или), оборачивая каждое условие в скобки. Например: df.loc[(df[‘sales’]>1000) & (df[‘region’]==’North’), [‘date’, ‘sales’]].
Сохранение выбранных столбцов в новый DataFrame
После выбора нескольких столбцов из исходного DataFrame их можно сохранить в отдельный объект для дальнейшей обработки. Это упрощает работу с подтаблицами и предотвращает случайное изменение исходных данных.
Пример сохранения столбцов [‘date’, ‘sales’, ‘customer_id’] в новый DataFrame:
df_selected = df[[‘date’, ‘sales’, ‘customer_id’]]
Преимущества сохранения в новый DataFrame:
- Изоляция подмножества данных для отчётов или визуализации
- Сохранение оригинального индекса строк
- Возможность последующей фильтрации и агрегирования без влияния на исходный DataFrame
Для динамического выбора столбцов рекомендуется использовать переменные списков. Например:
- Определяем список нужных колонок: columns_to_keep = [‘date’, ‘sales’]
- Создаём новый DataFrame: df_filtered = df[columns_to_keep]
- Применяем дополнительные операции, например: df_filtered.mean() или df_filtered.to_csv(‘filtered.csv’)
Такой подход позволяет формировать готовые подтаблицы для анализа, хранения и передачи данных другим инструментам, сохраняя структуру и порядок выбранных столбцов.
Вопрос-ответ:
Как выбрать сразу несколько столбцов в DataFrame?
Для выбора нескольких столбцов используйте список с их именами в квадратных скобках. Например, df[[‘column1’, ‘column2’]] вернёт только эти колонки. Такой способ сохраняет порядок столбцов и индекс строк.
Можно ли динамически формировать список столбцов для выбора?
Да, можно создавать список колонок программно. Например, columns_to_select = [col for col in df.columns if col.endswith(‘_qty’)]. После этого можно вывести выбранные столбцы через df[columns_to_select], что упрощает работу с большими таблицами.
Как использовать метод loc для фильтрации строк и вывода столбцов одновременно?
Метод loc позволяет указать условие для строк и список столбцов одновременно. Например: df.loc[df[‘sales’]>1000, [‘date’, ‘sales’]] вернёт только строки с продажами больше 1000 и колонки ‘date’ и ‘sales’.
Что делать, если имя столбца содержит пробел или специальные символы?
В таких случаях точечный синтаксис df.column_name не работает. Необходимо использовать скобочный вариант: df[‘column name’]. Это позволит корректно выбрать колонку без ошибок.
Как сохранить выбранные столбцы в новый DataFrame для дальнейшей работы?
Создайте новый DataFrame через подвыборку столбцов. Например, df_selected = df[[‘date’, ‘sales’, ‘customer_id’]]. Новый DataFrame сохраняет индексы и порядок строк, что удобно для фильтрации, агрегации или экспорта в CSV и другие форматы.
