# Как переименовать столбцы в Pandas DataFrame (с примерами)

Возможность переименовывать столбцы в вашем DataFrame Pandas — это очень распространённая задача. В частности, умение присваивать столбцам осмысленные названия помогает лучше передать суть ваших данных. Аналогично, вы могли получить данные от другого человека, и столбцы в них оказались неправильно помечены. Во всех этих случаях умение переименовывать столбцы вашего DataFrame оказывается полезным навыком.

В этом руководстве вы узнаете, как переименовывать столбцы в Pandas DataFrame. Вы научитесь использовать метод `.rename()` из Pandas, а также другие полезные приёмы. Например, вы узнаете, как добавить префикс или суффикс ко всем названиям столбцов.

**К концу этого урока вы научитесь:**

* Переименовывать один столбец или все столбцы в Pandas DataFrame с помощью метода `.rename()`
* Использовать атрибут `.columns` для переименования столбцов различными способами, такими как добавление префикса или суффикса, или приведение всех названий к нижнему регистру
* Заменять или удалять определённый текст или символы из всех названий столбцов сразу
* Использовать функции-мапперы для переименования столбцов Pandas DataFrame
* Добавлять префиксы или суффиксы ко всем названиям столбцов

### Оглавление

* [Как переименовывать столбцы в Pandas DataFrame](#kak-mozhno-pereimenovat-stolbcy-pandas-dataframe)
* [Загрузка примера DataFrame](#zagruzka-primera-dataframe)
* [Как переименовать один столбец DataFrame Pandas](#kak-pereimenovat-odin-stolbec-dataframe-pandas)
* [Переименование одного столбца DataFrame Pandas по позиции](#pereimenovanie-odnogo-stolbca-dataframe-pandas-po-pozicii)
* [Как переименовать несколько столбцов с помощью `.rename()`](#kak-pereimenovat-neskolko-stolbcov-pandas-s-pomoshyu-.rename)
* [Как использовать генераторы списков (list comprehensions) для переименования столбцов DataFrame](#kak-ispolzovat-generatory-spiskov-list-comprehensions-dlya-pereimenovaniya-stolbcov-dataframe-v-pand)
* [Использование функции-маппера для переименования столбцов Pandas](#ispolzovanie-funkcii-mappera-dlya-pereimenovaniya-stolbcov-pandas)
* [Использование лямбда-функции для переименования столбцов Pandas](#ispolzovanie-lyambda-funkcii-dlya-pereimenovaniya-stolbcov-pandas)
* [Переименование столбцов DataFrame Pandas на месте](#pereimenovanie-stolbcov-dataframe-pandas-na-meste)
* [Обработка ошибок при переименовании столбцов Pandas](#vyzov-oshibok-pri-pereimenovanii-stolbcov-pandas)
* [Переименование многоуровневых (multi-index) столбцов Pandas](#pereimenovanie-mnogourovnevykh-multi-index-stolbcov-pandas)
* [Добавление префикса или суффикса ко всем столбцам DataFrame](#dobavlenie-prefiksa-ili-suffiksa-ko-vsem-stolbcam-dataframe-pandas)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

#### Как можно переименовать столбцы Pandas DataFrame?

Чтобы переименовать столбцы в Pandas DataFrame, у вас есть два основных варианта: использовать метод `rename()` или атрибут `columns`. Метод `.rename()` позволяет передать текущие названия и новые названия. Атрибут `.columns` позволяет указать список новых названий для столбцов.

Рассмотрим подробнее основные методы переименования столбцов в Pandas DataFrame:

**Метод Pandas `.rename()`** позволяет переименовывать метки DataFrame. В частности, вы можете передать отображение (mapping) для переименования названий столбцов. Это может быть либо функция-маппер, либо словарь с новыми названиями. Этот метод особенно удобен, когда вы хотите изменить название одного или нескольких столбцов.

**Атрибут Pandas `.columns`** позволяет передать список значений, которые будут использоваться как новые названия столбцов. Это позволяет легко изменить все названия столбцов, применив к ним одно и то же преобразование. Этот метод предпочтителен, когда вы хотите переименовать все столбцы одинаковым образом, например, привести их к нижнему регистру или удалить пробелы.

### Загрузка примера DataFrame

Чтобы следовать материалу урока, давайте загрузим образец DataFrame Pandas. Скопируйте и вставьте приведённый ниже код в свой редактор. Если вы работаете со своим собственным набором данных — проблем нет! Результаты, конечно, будут отличаться.

```python
# Загрузка примера Pandas DataFrame

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})
print(df)

# Возвращает:
#       Name  Age Age Group Birth City  Gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

Мы можем видеть, что у нас есть DataFrame с пятью различными столбцами. Некоторые из столбцов состоят из одного слова, тогда как другие содержат несколько слов, разделённых пробелами. Кроме того, все названия столбцов написаны с заглавной буквы (в стиле Title Case).

Давайте перейдём к рассмотрению того, как переименовывать столбцы Pandas, начав с изменения названия одного столбца.

### Как переименовать один столбец DataFrame Pandas

Чтобы переименовать один столбец DataFrame в Pandas, мы можем воспользоваться методом `.rename()`. Как следует из названия, этот метод используется для переименования меток в DataFrame. Давайте кратко посмотрим, как записывается этот метод:

```python
# Понимание метода .rename() в Pandas

import pandas as pd

# Пример использования (DataFrame 'df' предполагается уже определенным)
# mapper: dict или function, необязательный. Используется для изменения меток индекса или столбцов.
# index: dict или function, необязательный. Альтернатива mapper для изменения меток индекса.
# columns: dict или function, необязательный. Альтернатива mapper для изменения названий столбцов.
# axis: {0 или 'index', 1 или 'columns'}, по умолчанию 0. Ось для переименования.
# copy: bool, по умолчанию True. Копировать базовые данные.
# inplace: bool, по умолчанию False. Изменять DataFrame на месте.
# level: int или name, необязательный. Для MultiIndex, уровень, метки которого нужно изменить.
# errors: {'ignore', 'raise'}, по умолчанию 'ignore'. Если 'raise', вызывает ошибку при недопустимых метках.
df.rename(mapper=None, *, index=None, columns=None, axis=None, copy=None, inplace=False, level=None, errors='ignore')
```

Мы можем видеть, что функция принимает до семи аргументов. Некоторые из этих параметров относятся specifically к переименованию строк (меток индекса). Поскольку мы сосредоточены на переименовании столбцов, давайте рассмотрим только подмножество этих параметров.

Чтобы переименовать один столбец в Pandas, мы можем использовать либо параметр `mapper=`, либо вспомогательный параметр `columns=`. Поскольку столбцы находятся вдоль первой оси, если мы хотим использовать параметр `mapper=`, нам нужно указать `axis=1`. Однако, на мой взгляд, это немного сложнее, чем использование более удобного параметра `columns=`.

Давайте посмотрим, как можно использовать параметр `columns=` для переименования столбца Pandas по имени:

```python
# Переименование одного столбца в Pandas DataFrame

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Переименование столбца 'Birth City' в 'City'
df = df.rename(columns={'Birth City': 'City'})
print(df)

# Возвращает:
#       Name  Age Age Group     City  Gender
# 0     Jane   23     18-35   London  Female
# 1  Melissa   45     35-50    Paris  Female
# 2     John   35     35-50  Toronto    Male
# 3     Matt   64       65+  Atlanta    Male
```

Мы можем видеть, что передав словарь сопоставления столбцов в параметр `columns=`, нам удалось переименовать один столбец в DataFrame Pandas. Это эквивалентно записи:\
`df = df.rename(mapper={'Birth City': 'City'}, axis=1)`.

Однако этот способ не только понятнее, но и быстрее набирается!

### Переименование одного столбца DataFrame Pandas по позиции

Теперь предположим, что вы не знаете, как называется первый столбец, но хотите присвоить ему определённое имя. Атрибут `df.columns` возвращает список всех названий столбцов в DataFrame. Благодаря этому мы можем передать отображение для первого столбца.

Например, если мы хотим изменить название первого столбца на `'id'`, мы можем написать следующее:

```python
import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Переименование первого столбца (по индексу 0) в 'id'
df = df.rename(columns={df.columns[0]: 'id'})
print(df)

# Возвращает:
#         id  Age Age Group Birth City  Gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

Мы можем видеть, что нам удалось переименовать первый столбец DataFrame, воспользовавшись атрибутом `.columns`. Мы вернёмся к более активному использованию этого атрибута чуть позже. А сейчас сосредоточимся на том, как переименовать сразу несколько столбцов.

### Как переименовать несколько столбцов Pandas с помощью `.rename()`

Аналогично переименованию одного столбца в DataFrame, мы можем использовать метод `.rename()` для переименования нескольких столбцов. Для этого достаточно передать словарь, содержащий несколько пар ключ-значение.

Давайте посмотрим, как переименовать несколько столбцов в DataFrame Pandas с помощью метода `.rename()`:

```python
# Переименование нескольких столбцов с помощью .rename()

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Переименование столбцов 'Age Group' в 'Group' и 'Birth City' в 'City'
df = df.rename(columns={'Age Group': 'Group', 'Birth City': 'City'})
print(df)

# Возвращает:
#       Name  Age  Group     City  Gender
# 0     Jane   23  18-35   London  Female
# 1  Melissa   45  35-50    Paris  Female
# 2     John   35  35-50  Toronto    Male
# 3     Matt   64    65+  Atlanta    Male
```

Мы можем видеть, что нам удалось переименовать сразу несколько столбцов за один раз. На этом этапе стоит отметить, что если указанного столбца не существует, Pandas по умолчанию не вызовет ошибку — хотя вы можете изменить это поведение, как вы узнаете позже.

Теперь давайте рассмотрим способ переименования нескольких столбцов с использованием генератора списка (list comprehension).

### Как использовать генераторы списков (list comprehensions) для переименования столбцов DataFrame в Pandas

В этом разделе вы узнаете, как использовать генераторы списков для переименования столбцов в Pandas. Это может быть полезно, когда вы хотите переименовать столбцы по одному и тому же шаблону. Например, можно удалить пробелы или привести все названия к нижнему регистру.

Например, если в ваших заголовках столбцов есть пробелы, становится невозможно использовать точечную нотацию для выбора столбцов. Кроме того, поскольку выборка данных чувствительна к регистру, наличие разных стилей написания усложняет работу со столбцами.

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

```python
# Переименование столбцов с использованием спискового включения

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Замена пробелов на подчеркивания и приведение названий столбцов к нижнему регистру
df.columns = [col.replace(' ', '_').lower() for col in df.columns]
print(df)

# Возвращает:
#       name  age age_group birth_city  gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

Разберём, что происходит в приведённом выше блоке кода:

1. Мы использовали генератор списка (list comprehension), чтобы пройтись по каждому названию столбца в нашем DataFrame.
2. Для каждой метки столбца мы применили строковой метод `.replace()`, чтобы заменить все пробелы на символ подчёркивания `_`.
3. Также мы применили метод `.lower()` для перевода всей строки в нижний регистр.

Важно отметить, что мы не присваиваем полученный список обратно в DataFrame как новую переменную, а напрямую назначаем его атрибуту `df.columns`. Поскольку этот атрибут отвечает за хранение названий столбцов, мы можем передать ему список новых имён, и они заменят текущие заголовки.

### Использование функции-маппера для переименования столбцов Pandas

Метод `.rename()` из Pandas также позволяет передавать в параметр `mapper=` не только словарь, но и функцию. Это означает, что вы можете применить одну и ту же трансформацию ко всем названиям столбцов.

Например, если мы просто хотим привести все названия столбцов к нижнему регистру, это можно сделать с помощью функции-маппера, переданной прямо в метод `.rename()`:

```python
# Переименование столбцов DataFrame с использованием функции-отображения

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Применение функции str.lower к названиям столбцов
df = df.rename(mapper=str.lower, axis='columns')
print(df)

# Возвращает:
#       name  age age_group birth_city  gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

Мы используем `axis='columns'`, чтобы указать, что хотим применить преобразование к столбцам. Аналогично, можно было бы написать: `axis=1`. Мы можем видеть, что преобразование было применено ко всем столбцам.

Имейте в виду, что поскольку мы используем строковой метод, этот подход будет работать только в том случае, если все названия ваших столбцов — строки! Если какие-либо столбцы содержат, например, числа, этот метод вызовет ошибку `TypeError`.

### Использование лямбда-функции для переименования столбцов Pandas

Вы также можете использовать собственные лямбда-функции, чтобы передавать более сложные преобразования. Это работает так же, как и использование простой встроенной функции-маппера, но позволяет задавать собственные правила для изменения названий столбцов.

Рассмотрим пример. Если мы хотим использовать лямбда-функцию для переименования всех столбцов, заменяя пробелы на подчёркивания и приводя всё к нижнему регистру, мы могли бы написать:

```python
# Переименование столбцов с использованием лямбда-функции

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Применение лямбда-функции для замены пробелов на подчеркивания и приведения к нижнему регистру
df = df.rename(mapper=lambda x: x.replace(' ', '_').lower(), axis=1)
print(df)

# Возвращает:
#       name  age age_group birth_city  gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

Мы используем `axis=1`, чтобы указать, что хотим применить это преобразование к столбцам. Аналогично, можно было бы написать: `axis='columns'`.

### Переименование столбцов DataFrame Pandas на месте

Вы могли заметить, что во всех наших примерах с использованием метода `.rename()` мы переназначали DataFrame самому себе. Мы можем избежать этого, используя булев параметр `inplace=` в нашем вызове метода. Давайте проиллюстрируем это на предыдущем примере:

```python
# Переименование столбцов DataFrame на месте

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Переименование столбцов с применением лямбда-функции и изменением DataFrame на месте
df.rename(mapper=lambda x: x.replace(' ', '_').lower(), axis=1, inplace=True)
print(df)

# Возвращает:
#       name  age age_group birth_city  gender
# 0     Jane   23     18-35     London  Female
# 1  Melissa   45     35-50      Paris  Female
# 2     John   35     35-50    Toronto    Male
# 3     Matt   64       65+    Atlanta    Male
```

В следующем разделе вы узнаете, как вызывать ошибки при использовании метода `pd.rename()`.

### Вызов ошибок при переименовании столбцов Pandas

По умолчанию метод `.rename()` не вызывает ошибок, если вы пытаетесь переименовать несуществующий столбец. Это может привести к неожиданным проблемам, особенно если вы предполагаете, что столбец был переименован, хотя на самом деле это не произошло.

Давайте посмотрим на это в действии, попробовав переименовать столбец, которого нет в DataFrame:

```python
# Вызов ошибки при переименовании столбцов

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Попытка переименовать несуществующий столбец с установкой errors='raise'
try:
    df = df.rename(columns={'some silly name': 'column1'}, errors='raise')
    print(df)
except KeyError as e:
    print(f"Возникла ошибка: {e}")

# Ожидаемый вывод:
# KeyError: "['some silly name'] not found in axis"
```

Мы можем видеть, что используя параметр `errors=`, мы можем заставить Python вызывать ошибку, если метка столбца не существует.

### Переименование многоуровневых (multi-index) столбцов Pandas

Метод `.rename()` также включает аргумент, позволяющий указать, какой уровень многоуровневого индекса (multi-index) вы хотите переименовать. Часто многоуровневые столбцы встречаются при работе со сводными таблицами (pivot tables). Давайте рассмотрим пример. Предположим, мы создали сводную таблицу в Pandas и хотим переименовать только столбец на первом уровне.

```python
import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Создание сводной таблицы
pivot = pd.pivot_table(data=df, columns=['Gender', 'Age Group'], values='Age', aggfunc='count')

# Переименование столбца 'Male' в 'male' на уровне 0 (уровень 'Gender')
pivot = pivot.rename(columns={'Male': 'male'}, level=0)
print(pivot)

# Возвращает:
# Gender    Female        male
# Age Group  18-35 35-50 35-50 65+
# Age            1     1     1   1
```

В приведённом выше примере мы создали многоуровневый DataFrame Pandas. Первый уровень (уровень 0) содержит значения из нашего столбца `Gender`. Указав, что мы хотим использовать только уровень 0, мы можем применить переименование только к меткам столбцов этого уровня. Чтобы узнать больше о сводных таблицах в Pandas, ознакомьтесь с моим подробным руководством по \[этой ссылке].

### Добавление префикса или суффикса ко всем столбцам DataFrame Pandas

Мы также можем добавить префикс или суффикс ко всем столбцам DataFrame, используя специальные методы:

* `.add_prefix()` — добавляет указанный префикс к каждому названию столбца,
* `.add_suffix()` — добавляет указанный суффикс к каждому названию столбца.

Давайте посмотрим, как можно использовать эти методы для добавления префикса ко всем столбцам нашего DataFrame:

```python
# Добавление префикса к названиям столбцов DataFrame

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Добавление префикса 'prefix_' ко всем названиям столбцов
df = df.add_prefix('prefix_')
print(df)

# Возвращает:
#   prefix_Name  prefix_Age prefix_Age Group prefix_Birth City prefix_Gender
# 0        Jane          23            18-35            London        Female
# 1     Melissa          45            35-50             Paris        Female
# 2        John          35            35-50           Toronto          Male
# 3        Matt          64              65+           Atlanta          Male
```

Добавление суффикса выполняется точно так же, только вместо `.add_prefix()` используется метод `.add_suffix()`.

Аналогично, если мы хотим добавить суффикс только к определённым столбцам, мы можем использовать генератор списка (list comprehension). Например, если мы хотим добавить суффикс к столбцам, в названии которых содержится слово `age`, мы можем использовать следующий код:

```python
# Добавление суффикса по условию

import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Age': [23, 45, 35, 64],
    'Age Group': ['18-35', '35-50', '35-50', '65+'],
    'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
    'Gender': ['Female', 'Female', 'Male', 'Male']})

# Добавление суффикса '_suffix' к названиям столбцов, содержащих 'Age'
df.columns = [col+'_suffix' if 'Age' in col else col for col in df.columns]
print(df)

# Возвращает:
#       Name  Age_suffix Age Group_suffix Birth City  Gender
# 0     Jane          23            18-35     London  Female
# 1  Melissa          45            35-50      Paris  Female
# 2     John          35            35-50    Toronto    Male
# 3     Matt          64              65+    Atlanta    Male
```

В приведённом выше примере мы использовали генератор списка (list comprehension), чтобы применить преобразование условно. Это позволило нам проверять выполнение определённого условия: если условие выполняется (в данном случае, если в названии столбца содержится слово `'Age'`), к нему добавляется суффикс. В противном случае название столбца остаётся без изменений.

### Заключение

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

* Использование метода `.rename()` для переименования одного или нескольких столбцов,
* Использование атрибута `.columns` для массового изменения названий.

Затем вы научились переименовывать отдельные столбцы — как по имени, так и по позиции. Далее вы узнали, как переименовать сразу несколько столбцов с помощью метода `.rename()` и генераторов списков. Также были рассмотрены способы использования функций-мапперов, включая встроенные и пользовательские лямбда-функции.

Наконец, вы узнали, как переименовывать столбцы на месте (inplace), как вызывать ошибки при попытке переименовать несуществующий столбец, а также как работать с уровнями многоуровневых (multi-index) DataFrame.

### Дополнительные ресурсы

Чтобы узнать больше по смежным темам, ознакомьтесь со следующими материалами:

* Pandas Rename Index: Как переименовать индекс DataFrame
* Pandas Replace: Замена значений в DataFrame
* Pandas: Замена NaN на нули
* [Официальная документация к методу .rename() в Pandas](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rename.html)

