logo

Способы среза столбцов в DataFrame pandas: анализ и решения

Быстрый ответ

Для выделения столбцов из DataFrame в pandas используйте loc, указывая имена столбцов, или iloc, если работаете с их номерами. Срез по меткам:

Python
Скопировать код
column_slice = df.loc[:, 'B':'C']  # Выделяем столбцы B и C

Для создания среза по номерам:

Python
Скопировать код
column_slice = df.iloc[:, 1:3]  # Выбираем второй и третий столбцы

Оба метода возвращают столбцы B и C из DataFrame df.

Выбираем именно те столбцы, что нужно

Если вам нужно выбрать столбцы не последовательно, используйте список:

Python
Скопировать код
selected_columns = df.loc[:, ['A', 'C', 'F']]  # Выбираем столбцы A, C и F

Такой способ позволит сформировать подмножество, содержащее только выбранные столбцы.

Срезы: включительно – это эксклюзивно

В Python принято не включать последний элемент в срез, но в pandas при использовании методов .loc и .iloc последний элемент включается:

Python
Скопировать код
# Срез списка в Python (без последнего элемента):
python_slice = myList[0:2]  # Python не включает последний элемент
# Срез в DataFrame pandas с .loc (включая последний элемент):
pandas_slice = df.loc[:, 'B':'C']  # В pandas последний элемент включен

Перестаньте использовать устаревшие функции

Забудьте об использовании устаревшего индексатора .ix. Пользуйтесь .loc и .iloc для обхода устаревшего кода.

Визуализация

Аналогично, можно представить DataFrame как библиотеку, где каждая книга – это год, а каждая страница – это столбец:

Библиотека (📚): [Книга 2019 года, Книга 2020 года, Книга 2021 года]
Страницы-столбцы: [Продажи, Затраты, Прибыль, Сотрудники]

Выделение столбцов можно сравнить с созданием индивидуально составленной книги:

Markdown
Скопировать код
Персонализированная Книга (📖): [Страница Продажи, Страница Прибыль]
Python
Скопировать код
# В pandas это будет выглядеть так:
df[['Продажи', 'Прибыль']]  # Оставляем только интересующие нас столбцы

Работаем с срезами

Можно использовать функцию среза slice для более понятной записи:

Python
Скопировать код
# Применение объекта slice
df.loc[:, slice('B', 'C')]  # Очарование жизни в ее мелочах!

Будьте гибкими при переиндексации

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

Python
Скопировать код
new_order = ['Прибыль', 'Продажи']
reindexed_df = df.reindex(columns=new_order)  # Новый порядок, новые приоритеты!

В результате, столбец Прибыль будет первым.

Владейте техниками извлечения

Чтобы удобно извлекать данные из больших массивов, используйте iloc:

Python
Скопировать код
# Извлекаем столбцы по их номерам
data_subset = df.iloc[:, [0, 2, 5]]  # Так мы точно получим нужные данные!

Срезы без ошибок

Чтобы минимизировать риски ошибок, используйте атрибут columns вашего DataFrame:

Python
Скопировать код
# Использование атрибута columns для среза
df.loc[:, df.columns[1:4]]  # Так мы обеспечим корректность наших действий!

Этот подход поможет избежать ошибок и адаптироваться к изменениям в структуре столбцов.

Полезные материалы

  1. python – How to take column-slices of dataframe in pandas – Stack Overflow — Полезные советы из безценного кладезя знаний Stack Overflow.
  2. Indexing and selecting data — pandas 2.2.0 documentation — Детальное руководство по индексации в pandas от создателей библиотеки.
  3. python – pandas loc vs. iloc vs. at vs. iat? – Stack Overflow — Обсуждение различных методов индексации в pandas.
  4. MultiIndex / advanced indexing — pandas 2.2.0 documentation — Глубокое изучение техник сложной индексации.
  5. Data Indexing and Selection | Python Data Science Handbook — Основы индексации и выбора данных в Python.
  6. Pandas Pivot Table Explained – Practical Business Python — Интуитивно понятное руководство по использованию сводных таблиц в pandas.