Переименование индекса и колонок в DataFrame Pandas
Быстрый ответ
Если вам требуется переименовать индекс в DataFrame Pandas, применяйте метод .rename()
:
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 меняется успешно.
Расширяем возможности переименования
Работаем с MultiIndex DataFrames
Если ваш DataFrame обладает MultiIndex, можно переименовать каждый уровень:
df.index.rename(['Level1', 'Level2'], inplace=True) # Присваиваем имя каждому уровню!
Это облегчает редактирование многоуровневых индексов.
Добавляем имена индексам без названий
Если ваш DataFrame не содержит именованных индексов, их можно добавить:
df.index.names = ['Date'] # И появилось имя у индекса!
А для MultiIndex DataFrame присвоение имен происходит следующим образом:
df.index.names = ['Region', 'Store'] # Присваиваем имя каждому индексу.
Присваиваем Series новую метку
Когда работаете с Pandas Series, переименуйте её так:
series = df['A'] # Вот наша Series. 'A' осталась в прошлом...
series.rename('AllStar', inplace=True) # Теперь она 'AllStar'!
Новое имя для Series делает её использование более удобным.
Сможете ли вы уловить (Pandas) версию?
Не все Pandas созданы одинаковыми
При использовании разных версий Pandas будьте готовы к тому, что функционал может отличаться. Проверяйте версию с помощью pd.__version__
и сверяйтесь с Документацией Pandas.
Массовое переименование с применением генераторов списков
Для массового переименования привлеките генераторы списков:
# Переименуем индексы!
df.index = [f'Index {label}' for label in df.index]
# И колонки подвергаем тому же!
df.columns = [f'Col {col}' for col in df.columns]
Теперь переименование может стать легким и приятным занятием.
"Переворачиваем" и переименовываем с помощью транспонирования
Чтобы изменить отображение вашего DataFrame используйте транспонирование df.T
:
df = df.T # Транспонируем! Индексы и колонки меняются местами.
Теперь, в новой конфигурации, примените стандартные способы переименования.
Как справиться с общими проблемами
Как предотвратить ошибки при использовании
Для корректного функционирования удостоверьтесь, что параметры указаны верно:
- Установите
axis='index'
для индексов иaxis='columns'
для колонок. - Параметр
inplace
определяет, будет ли модифицирован оригинальный DataFrame (inplace=True
) или создан новый (inplace=False
).
df.rename_axis('Big Boss', axis='index', inplace=True) # Индексу присвоено имя 'Big Boss'!
df.rename_axis('SideKick', axis='columns', inplace=True) # И теперь колонкам тоже даём имена!
Оживляем CSV-файлы
Работая с CSV-файлами без заголовков, укажите Pandas, что делать:
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 теперь приготовлен к использованию.
Визуализация
**Переименование индексов в DataFrame Pandas** – это и есть процесс переорганизации складского пространства:
Меняем старые обозначения 📦 на новые 🎁:
+---------------------+ +------------------------+
| Старая Коробка 📦 | | Новый Подарок 🎁 |
| Старый Ящик 🚧 | | Сундук Сокровищ 🗝 |
| Старый Контейнер 🏗 | | Коробка-Загадка 🎃 |
+---------------------+ +------------------------+
В DataFrame это происходит путём замены **меток индекса**:
```python
# Старый индекс Новый индекс
{ 'Box': 'Gift Box',
'Crate': 'Treasure Chest',
'Container': 'Mystery Box' }
```
Теперь ваш DataFrame выглядит аккуратно и удобно для восприятия.👓
Полезные материалы
- pandas.DataFrame.rename — pandas 2.2.0 документация — описание метода .rename() в официальном гайде.
- Индексация и выбор данных — pandas 2.2.0 документация — подсказки по созданию и работы с индексами в Pandas.
- Переименование индексов в DataFrame Pandas – Stack Overflow — обсуждение и методы переименования индексов DataFrame.
- pandas.DataFrame.set_axis — pandas 1.1.5 документация — подробности о методе
set_axis
для массового переименования. - Python | Pandas Dataframe.rename() – GeeksforGeeks — пошаговое обучение функции DataFrame.rename().
- Полное руководство по индексации в Pandas — обзор методов индексации в Pandas.
- Технические заметки Криса Элбона о переименовании колонок и индексов DataFrame — примеры кода для переименования столбцов и индексов.