Способы среза столбцов в DataFrame pandas: анализ и решения
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для выделения столбцов из DataFrame в pandas используйте loc, указывая имена столбцов, или iloc, если работаете с их номерами. Срез по меткам:
column_slice = df.loc[:, 'B':'C'] # Выделяем столбцы B и C
Для создания среза по номерам:
column_slice = df.iloc[:, 1:3] # Выбираем второй и третий столбцы
Оба метода возвращают столбцы B и C из DataFrame df.
Выбираем именно те столбцы, что нужно
Если вам нужно выбрать столбцы не последовательно, используйте список:
selected_columns = df.loc[:, ['A', 'C', 'F']] # Выбираем столбцы A, C и F
Такой способ позволит сформировать подмножество, содержащее только выбранные столбцы.
Срезы: включительно – это эксклюзивно
В Python принято не включать последний элемент в срез, но в pandas при использовании методов .loc и .iloc последний элемент включается:
# Срез списка в Python (без последнего элемента):
python_slice = myList[0:2] # Python не включает последний элемент
# Срез в DataFrame pandas с .loc (включая последний элемент):
pandas_slice = df.loc[:, 'B':'C'] # В pandas последний элемент включен
Перестаньте использовать устаревшие функции
Забудьте об использовании устаревшего индексатора .ix. Пользуйтесь .loc и .iloc для обхода устаревшего кода.
Визуализация
Аналогично, можно представить DataFrame как библиотеку, где каждая книга – это год, а каждая страница – это столбец:
Библиотека (📚): [Книга 2019 года, Книга 2020 года, Книга 2021 года]
Страницы-столбцы: [Продажи, Затраты, Прибыль, Сотрудники]
Выделение столбцов можно сравнить с созданием индивидуально составленной книги:
Персонализированная Книга (📖): [Страница Продажи, Страница Прибыль]
# В pandas это будет выглядеть так:
df[['Продажи', 'Прибыль']] # Оставляем только интересующие нас столбцы
Работаем с срезами
Можно использовать функцию среза slice
для более понятной записи:
# Применение объекта slice
df.loc[:, slice('B', 'C')] # Очарование жизни в ее мелочах!
Будьте гибкими при переиндексации
Временами может понадобиться переупорядочить столбцы DataFrame. Воспользуйтесь переиндексацией для приведения данных в нужный порядок:
new_order = ['Прибыль', 'Продажи']
reindexed_df = df.reindex(columns=new_order) # Новый порядок, новые приоритеты!
В результате, столбец Прибыль будет первым.
Владейте техниками извлечения
Чтобы удобно извлекать данные из больших массивов, используйте iloc:
# Извлекаем столбцы по их номерам
data_subset = df.iloc[:, [0, 2, 5]] # Так мы точно получим нужные данные!
Срезы без ошибок
Чтобы минимизировать риски ошибок, используйте атрибут columns вашего DataFrame:
# Использование атрибута columns для среза
df.loc[:, df.columns[1:4]] # Так мы обеспечим корректность наших действий!
Этот подход поможет избежать ошибок и адаптироваться к изменениям в структуре столбцов.
Полезные материалы
- python – How to take column-slices of dataframe in pandas – Stack Overflow — Полезные советы из безценного кладезя знаний Stack Overflow.
- Indexing and selecting data — pandas 2.2.0 documentation — Детальное руководство по индексации в pandas от создателей библиотеки.
- python – pandas loc vs. iloc vs. at vs. iat? – Stack Overflow — Обсуждение различных методов индексации в pandas.
- MultiIndex / advanced indexing — pandas 2.2.0 documentation — Глубокое изучение техник сложной индексации.
- Data Indexing and Selection | Python Data Science Handbook — Основы индексации и выбора данных в Python.
- Pandas Pivot Table Explained – Practical Business Python — Интуитивно понятное руководство по использованию сводных таблиц в pandas.