Как в pandas Python создать новый DataFrame из столбцов
Быстрый ответ
Если вы хотите извлечь определённые столбцы из вашего DataFrame df
и создать новый DataFrame, примените метод .copy()
из библиотеки pandas. Это можно сделать так:
new_df = df[['A', 'B']].copy()
Этот способ позволяет быстро и просто скопировать столбцы 'A' и 'B' из df
в новый DataFrame new_df
. Готово!
Расширяем свои знания: продвинутые способы копирования столбцов
Теперь, освоив основы, настал момент улучшить наши навыки. Рассмотрим несколько продвинутых методов копирования столбцов.
Используем .copy(), чтобы избежать предупреждений
При создании нового DataFrame в виде подмножества исходного pandas рекомендует использовать .copy()
, чтобы уберечься от испуга встречи с SettingWithCopyWarning. Это помогает создать полную копию данных и предотвращает нежелательные изменения в оригинальном DataFrame.
# Копируем столбцы A, B и C. Таким образом, df2 никак не связан с df1 и не создаст проблем.
df2 = df1[['A', 'B', 'C']].copy()
Нам нужен только нужный фильтр
Если вы хотите выбирать столбцы по их названиям, можете воспользоваться функцией filter()
.
# df.select_dtypes(include=[np.number]) выбирает все числовые столбцы. Не включайте столбец, если не уверены, что он вам нужен!
new_df = df.filter(df.select_dtypes(include=[np.number]).columns)
Умеем отказываться от лишнего
Иногда необходимость удаления столбца может создать сложности. Но метод drop()
придет на помощь!
# Столбец B вы не заслуживает нашего внимания? Избавляемся от него. Нам не нужна в данных негативная энергия (столбца B).
new_df = df.drop('B', axis=1)
Без названия, только номер: использование iloc
Если названия столбцов неизвестны или уж слишком замысловаты, вы можете использовать метод iloc
и выбирать столбцы по их позициям.
# Я могу быть анонимным, но вы знаете, где меня найти.
new_df = df.iloc[:, [0, 2, 3]].copy() # Предполагая, что 'A', 'C', 'D' – это первый, третий и четвёртый столбцы.
Доверимся управлением памяти pandas
Не нужно углубляться в управление памятью, когда перед вами стоит задача работы с большим DataFrame. Для больших наборов данных лучше использовать методы filter()
и iloc()
.
Визуализация
Давайте наглядно проиллюстрируем процесс копирования. Возьмем за пример инструментальный ящик (🧰). В нем есть различные инструменты, но нам по каким-то причинам нужны только отвёртки:
Оригинальный инструментальный ящик (🧰): [🔨, 🪓, 🔧, 🪛, 🗡️, 🪚]
Вы решили сделать свою работу удобнее и создали новый инструментальный ящик:
Новый инструментальный ящик: [🪛]
Здесь отвёртки (🪛) символизируют наши столбцы
, а новый инструментальный ящик 🆕🧰 — это ваш новый DataFrame.
Практическое руководство: выбор столбцов в реальной работе
Теперь перейдем к практическим решениям задач. Вот как можно выбрать столбцы в реальной работе.
Быстрый выбор столбцов по типу данных
У опытного программиста времени всегда не хватает, поэтому он ценит эффективность. Выберем столбцы определенного типа, например, числовые, с помощью метода select_dtypes()
:
numeric_cols = df.select_dtypes(include=[np.number]).columns.tolist()
new_df = df[numeric_cols]
Сохраняем память
Когда работаете с DataFrame большого размера, важно экономить память. Выбор только некоторых столбцов вместо удаления множества может сэкономить ресурсы:
cols_to_keep = ['A', 'B', 'F'] # B и F – это столбцы, которые мы решили оставить
new_df = df[cols_to_keep]
Гибкий и динамический выбор столбцов
Дайте столбцам работать на вас. Выбирайте столбцы в зависимости от задач:
# Ваш друг: Эй, можешь ли ты выбрать все столбцы, которые связаны с 'sales'?
# Вы, гуру Python: Без проблем!
cols_to_select = [col for col in df.columns if 'sales' in col]
new_df = df[cols_to_select].copy()
Полезные материалы
- DataFrame в pandas: облегчаем работу с данными – Real Python – Учитесь выделять столбцы в pandas.
- pandas.DataFrame.copy — pandas 2.2.0 documentation – Официальное руководство pandas по функции копирования
copy
. - Типы данных в Pandas – Practical Business Python – Подробно о типах данных в pandas и многом другом.
- Глубокое и поверхностное копирование объектов в Python – Real Python – Изучите разницу между глубоким и поверхностным копированием объектов. Сюрприз: это глубже, чем вы думаете!
- Шпаргалка по pandas — Python для Data Science – Dataquest – Шпаргалка по pandas. Незаменимый помощник в работе со столбцами.
- Булева индексация в Pandas – GeeksforGeeks – Освойте фильтрацию с булевой индексацией в pandas DataFrame.
- Pandas для начинающих – LearnDataSci – Всё о pandas: Полное руководство для начинающих.