Переименование индекса и колонок в DataFrame Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

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

Если вам требуется переименовать индекс в DataFrame Pandas, применяйте метод .rename():

Python
Скопировать код
df = pd.DataFrame({'A': [1, 2, 3]}, index=['x', 'y', 'z'])  # Создаём DataFrame
df.rename(index={'x': 'a', 'y': 'b', 'z': 'c'}, inplace=True)  # И обновляем индексы!

Таким образом, 'x', 'y', 'z' как волшебным образом преобразуются в 'a', 'b', 'c', и индекс DataFrame меняется успешно.

Кинга Идем в IT: пошаговый план для смены профессии

Расширяем возможности переименования

Работаем с MultiIndex DataFrames

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

Python
Скопировать код
df.index.rename(['Level1', 'Level2'], inplace=True)  # Присваиваем имя каждому уровню!

Это облегчает редактирование многоуровневых индексов.

Добавляем имена индексам без названий

Если ваш DataFrame не содержит именованных индексов, их можно добавить:

Python
Скопировать код
df.index.names = ['Date']  # И появилось имя у индекса!

А для MultiIndex DataFrame присвоение имен происходит следующим образом:

Python
Скопировать код
df.index.names = ['Region', 'Store'] # Присваиваем имя каждому индексу.

Присваиваем Series новую метку

Когда работаете с Pandas Series, переименуйте её так:

Python
Скопировать код
series = df['A']  # Вот наша Series. 'A' осталась в прошлом...
series.rename('AllStar', inplace=True)  # Теперь она 'AllStar'!

Новое имя для Series делает её использование более удобным.

Сможете ли вы уловить (Pandas) версию?

Не все Pandas созданы одинаковыми

При использовании разных версий Pandas будьте готовы к тому, что функционал может отличаться. Проверяйте версию с помощью pd.__version__ и сверяйтесь с Документацией Pandas.

Массовое переименование с применением генераторов списков

Для массового переименования привлеките генераторы списков:

Python
Скопировать код
# Переименуем индексы!
df.index = [f'Index {label}' for label in df.index]

# И колонки подвергаем тому же!
df.columns = [f'Col {col}' for col in df.columns]

Теперь переименование может стать легким и приятным занятием.

"Переворачиваем" и переименовываем с помощью транспонирования

Чтобы изменить отображение вашего DataFrame используйте транспонирование df.T:

Python
Скопировать код
df = df.T # Транспонируем! Индексы и колонки меняются местами.

Теперь, в новой конфигурации, примените стандартные способы переименования.

Как справиться с общими проблемами

Как предотвратить ошибки при использовании

Для корректного функционирования удостоверьтесь, что параметры указаны верно:

  • Установите axis='index' для индексов и axis='columns' для колонок.
  • Параметр inplace определяет, будет ли модифицирован оригинальный DataFrame (inplace=True) или создан новый (inplace=False).
Python
Скопировать код
df.rename_axis('Big Boss', axis='index', inplace=True)  # Индексу присвоено имя 'Big Boss'!
df.rename_axis('SideKick', axis='columns', inplace=True)  # И теперь колонкам тоже даём имена!

Оживляем CSV-файлы

Работая с CSV-файлами без заголовков, укажите Pandas, что делать:

Python
Скопировать код
df = pd.read_csv('data.csv', header=None)  # Загружаем CSV-файл...
df.columns = ['Column 1', 'Column 2']  # Устанавливаем имена колонок
df.index = pd.RangeIndex(start=1, stop=len(df) + 1).rename('ID')  # Присваиваем индексу имя и значение

Ваш DataFrame теперь приготовлен к использованию.

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

Markdown
Скопировать код
**Переименование индексов в DataFrame Pandas** – это и есть процесс переорганизации складского пространства:

Меняем старые обозначения 📦 на новые 🎁:

+---------------------+  +------------------------+
| Старая Коробка 📦 |  | Новый Подарок 🎁 |
| Старый Ящик  🚧    |  | Сундук Сокровищ  🗝 |
| Старый Контейнер 🏗 |  | Коробка-Загадка 🎃 |
+---------------------+  +------------------------+

В DataFrame это происходит путём замены **меток индекса**:


```python
# Старый индекс   Новый индекс
{ 'Box':      'Gift Box',
  'Crate':    'Treasure Chest',
  'Container': 'Mystery Box' }

```

Теперь ваш DataFrame выглядит аккуратно и удобно для восприятия.👓

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

  1. pandas.DataFrame.rename — pandas 2.2.0 документация — описание метода .rename() в официальном гайде.
  2. Индексация и выбор данных — pandas 2.2.0 документация — подсказки по созданию и работы с индексами в Pandas.
  3. Переименование индексов в DataFrame Pandas – Stack Overflow — обсуждение и методы переименования индексов DataFrame.
  4. pandas.DataFrame.set_axis — pandas 1.1.5 документация — подробности о методе set_axis для массового переименования.
  5. Python | Pandas Dataframe.rename() – GeeksforGeeks — пошаговое обучение функции DataFrame.rename().
  6. Полное руководство по индексации в Pandas — обзор методов индексации в Pandas.
  7. Технические заметки Криса Элбона о переименовании колонок и индексов DataFrame — примеры кода для переименования столбцов и индексов.