Pandas DataFrame reset_index() используется для сброса индекса DataFrame. Функция reset_index() используется для установки списка целых чисел от 0 до длины данных в качестве индекса.
Метод reset_index() полезен, когда индекс необходимо рассматривать как столбец или когда индекс не имеет смысла и его необходимо сбросить до значения по умолчанию перед другой операцией. В случае MultiIndex метод reset_index() может использоваться для удаления одного или нескольких уровней. Он либо сбрасывает индекс, либо его уровень. Давайте начнем с нескольких основных.
- DataFrame в Pandas
- Что такое функция DataFrame set_index() в Pandas?
- Что такое функция DataFrame reset_index() в Pandas?
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры Pandas DataFrame reset_index()
- Pandas reset_index() в Jupyter Notebook
- Удаление исходного индекса: drop
- Изменение индекса на другой столбец с помощью reset_index() и set_index()
- Заключение
DataFrame в Pandas
DataFrame — это не что иное, как представление листа Excel в памяти с помощью языка программирования Python. Объект index представляет собой неизменяемый массив. Индексация позволяет нам получить доступ к строке или столбцу с помощью метки. Pandas DataFrame — это композиция, содержащая двумерные данные и связанные с ними метки.
DataFrames широко используются в науке о данных, машинном обучении, научных вычислениях и многих других областях, связанных с интенсивным использованием данных.
Существует множество способов создать Pandas DataFrame. В большинстве случаев вы будете использовать конструктор DataFrame и заполнять данные, метки и другую информацию. Иногда вы будете импортировать данные из файла CSV или Excel, можете передать данные в виде двумерного списка, кортежа или массива NumPy. Вы также можете передать его как экземпляр словаря или Pandas Series или как один из многих других типов данных, не рассматриваемых в этом примере.
Прежде чем продолжить, давайте разберемся с set_index() в Pandas.
Что такое функция DataFrame set_index() в Pandas?
Pandas DataFrame set_index() — это функция, которая используется для установки списка, серии или фрейма данных в качестве индекса фрейма данных. Pandas DataFrame — это двухмерная структура данных с метками, столбцы которой потенциально могут быть другого типа.
См. следующий пример.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import pandas as pd dataset = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '03', '04', '05', '09'], 'Marks in maths': ['93', '63', '74', '94', '83'], 'Marks in science': ['88', '55', '66', '94', '35'], 'Marks in english': ['93', '74', '84', '92', '87']} # Converting dataset dict to a DataFrame df = pd.DataFrame(dataset) print('The DataFrame is: ') print(df.head()) # Setting index on MultiIndex which is name and Roll no df.set_index(["Name"], inplace=True, append=True, drop=True) print('After setting Name and Roll no as an index using set_index()') print(df.head()) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
The DataFrame is: Name Roll no Marks in maths Marks in science Marks in english 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 After setting Name and Roll no as an index using set_index() Roll no Marks in maths Marks in science Marks in english Name 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 |
Вы можете видеть, что столбец Name был установлен как индекс.
Что такое функция DataFrame reset_index() в Pandas?
Используя функцию DataFrame reset_index(), индекс (метка строки) DataFrame и Series может быть переназначен последовательности чисел (номер строки), начиная с 0. Если номера строк используются в качестве индекса, более удобно переиндексировать, когда порядок строк меняется после сортировки или отсутствует номер после удаления строки.
Он также используется для удаления текущего индекса или возврата к столбцу данных при использовании имени строки(строки) в качестве индекса. Используя df.set_index() и df.reset_index(), вы можете изменить индекс на другой столбец.
См. индекс функции Pandas reset_index().

Синтаксис
|
1 |
DataFrame.reset_index(level = None, drop= False, inplace = False, col_level=0, col_fill=”) |
Параметры
Все параметры заполнены значениями по умолчанию.
В методе reset_index() в Python есть пять параметров.
- level: это может быть целое число, строка или список для выбора и удаления переданного столбца из индекса.
- drop: это логический тип данных, он добавляет замененный индексный столбец к данным, если значение равно false.
- inplace: также относится к логическому типу данных; если логическое значение истинно, оно фиксирует некоторые изменения в самом исходном фрейме данных, если оно истинно.
- col_level: его значение по умолчанию равно 0. Он выбирает уровень столбца для вставки меток.
- col_fill: Тип объекта. Он используется для определения того, как называются другие уровни.
Возвращаемое значение
Функция reset_index() возвращает DataFrame с новым индексом или без него, если значение параметра inplace = true.
Примеры Pandas DataFrame reset_index()
- Напишем программу, показывающую работу reset_index().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import pandas as pd dataset = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '03', '04', '05', '09'], 'Marks in maths': ['93', '63', '74', '94', '83'], 'Marks in science': ['88', '55', '66', '94', '35'], 'Marks in english': ['93', '74', '84', '92', '87']} # Creating dataframe from the dict data df = pd.DataFrame(dataset) print('The DataFrame is: ') print(df) # Setting index on name only df.set_index(["Name"], inplace=True, append=True, drop=True) print('After setting name as an index using set_index()') print(df) # resetting index to level 1 df.reset_index(level=1, inplace=True, col_level=1) # display print('After resetting the index using reset_index()') print(df.head()) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
The DataFrame is: Name Roll no Marks in maths Marks in science Marks in english 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 After setting name as an index using set_index() Roll no Marks in maths Marks in science Marks in english Name 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 After resetting the index using reset_index() Name Roll no Marks in maths Marks in science Marks in english 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 |
Здесь мы видим, что мы создали словарь для небольшого набора данных, затем преобразовали его в DataFrame, затем мы установили индекс для столбца имени, используя метод Pandas set_index(). Затем, используя reset_index, мы сбросили его на уровень 1 и сгенерировали окончательный вывод.
В выводе видно, что после сброса индекса DataFrame преобразуется в исходную форму.
- Напишем программу, которая будет использовать reset_index() для нескольких столбцов(несколько индексов).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import pandas as pd dataset = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '03', '04', '05', '09'], 'Marks in maths': ['93', '63', '74', '94', '83'], 'Marks in science': ['88', '55', '66', '94', '35'], 'Marks in english': ['93', '74', '84', '92', '87']} # Converting dataset dict to a DataFrame df = pd.DataFrame(dataset) print('The DataFrame is: ') print(df.head()) # Setting index on MultiIndex which is name and Roll no df.set_index(["Name", "Roll no"], inplace=True, append=True, drop=True) print('After setting Name and Roll no as an index using set_index()') print(df.head()) # Resetting index to level 2 df.reset_index(level=2, inplace=True, col_level=1) # Display print('After resetting the index of col_level = 1 using reset_index()') print(df.head()) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
The DataFrame is: Name Roll no Marks in maths Marks in science Marks in english 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 After setting Name and Roll no as an index using set_index() Marks in maths Marks in science Marks in english Name Roll no 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 After resetting the index of col_level = 1 using reset_index() Roll no Marks in maths Marks in science Marks in english Name 0 Rohit 01 93 88 93 1 Mohit 03 63 55 74 2 Sohit 04 74 66 84 3 Arun 05 94 94 92 4 Shubh 09 83 35 87 |
Во-первых, мы определили Dictionary, а затем использовали этот словарь для создания небольшого DataFrame. Затем мы использовали функцию reset_index() для назначения мультииндекса столбцам Name и Roll no. Используя метод reset_index, мы изменили его на уровень 1. Это означает, что индекс в Roll no удален, и теперь индексируется только столбец Name.
Pandas reset_index() в Jupyter Notebook
Jupyter Notebook — важный инструмент, когда мы имеем дело с большими наборами данных. Чтобы иметь дело с Pandas, нам нужен набор данных. Поэтому я буду использовать набор данных ratings.csv.
Теперь давайте импортируем pandas и используем функцию read_csv() для создания DataFrame из файла CSV.
|
1 2 3 4 |
import pandas as pd df = pd.read_csv('ratings.csv') df.head() |
Нажмите кнопку Shift + Enter, чтобы запустить код, и вы получите следующий вывод.

Мы должны использовать функцию DataFrame.head(), чтобы выбрать 5 верхних строк из DataFrame.
Теперь давайте установим индекс для столбца рейтинга.
|
1 2 3 |
df.set_index(["rating"], inplace=True, append=True, drop=True) df.head() |

Из вывода видно, что рейтинг не индексируется.
Теперь, чтобы сбросить индекс, мы будем использовать функцию reset_index().
|
1 2 |
df.reset_index(inplace = True) df.head() |
Смотрите вывод.

Вы можете видеть, что он сбрасывает индекс.
Если вы не установили индекс в DataFrame и по-прежнему используете функцию reset_index(), она создаст столбец индекса, начиная с нуля.

Из вывода видно, что метод Pandas reset_index() устанавливает список целых чисел, начиная с 0, до длины данных в качестве индекса.
Удаление исходного индекса: drop
Если для параметра drop задано значение True, исходный индекс удаляется.
Допустим, мы присваиваем индекс столбцу рейтинга, а затем используем метод reset_index(), чтобы удалить этот индекс. См. следующий снимок экрана.

В выводе видно, что столбец рейтинга удален, и в данный момент столбца индекса нет. По умолчанию reset_index() не изменяет исходный объект и возвращает новый объект, но если для аргумента inplace установлено значение True, исходный объект изменяется.
Изменение индекса на другой столбец с помощью reset_index() и set_index()
Допустим, когда мы конвертируем данные CSV в DataFrame, мы можем передать параметр index_col, который указывает, какой столбец станет индексом DataFrame. Если мы передаем index_col = 0, то первый столбец DataFrame будет преобразован в индекс. Затем мы используем функцию reset_index() для сброса индекса DataFrame.
Для лучшего понимания см. следующий пример.

Заключение
Python — отличный язык программирования для интеллектуального анализа данных благодаря фантастической экосистеме пакетов Python, ориентированных на данные. Pandas — один из таких пакетов, который значительно упрощает импорт и анализ данных.
Метод Pandas reset_index() необходим для сброса индекса фрейма данных. Метод задает список целых чисел от 0 до длины данных в качестве индекса.
