Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
В этом уроке вы научитесь использовать Pandas для удаления столбца индекса. Удаление столбца индекса в DataFrame Pandas позволяет избавиться от нежелательных столбцов или перестроить ваш набор данных значимым образом. Вы научитесь делать это с помощью метода .reset_index()
DataFrame, метода .set_index()
, а также как читать и записывать файлы CSV без индекса.
При создании DataFrame библиотека Pandas пытается определить столбец индекса автоматически. Хотя во многих случаях индексы оказываются уместными, бывают ситуации, когда вам может потребоваться удалить индекс. Pandas предлагает множество удобных способов сделать это, как после загрузки DataFrame, так и до её начала.
В приведенном ниже обзоре вы узнаете, как удалять столбец индекса в DataFrame библиотеки Pandas.

Быстрый ответ: Используйте Pandas .reset_index(drop=True)
, чтобы удалить столбец индекса
# Dropping an Index Column in Pandas
import pandas as pd
df = pd.DataFrame.from_dict({
'Name': ['Jane', 'Nik', 'Kate', 'Melissa'],
'Age': [10, 35, 34, 23]
}).set_index('Name')
df = df.reset_index(drop=True)
Содержание
Conclusion
Additional Resources
Что такое столбец индекса Pandas?
Индекс в Pandas аналогичен номеру строки в Excel. Однако сказать только это было бы недооценкой индекса. Это потому, что он гораздо больше, чем просто номер строки. Мы можем думать об индексе строки как о способе доступа к записям DataFrame – подобно адресу или ключу словаря.
По умолчанию, если конкретный индекс не передается, Pandas автоматически генерирует индекс. Этот индекс начинается с числа 0 и доходит до длины DataFrame минус 1. Такой тип индекса называется RangeIndex (поскольку он представляет значения из функции диапазона). Однако, если вы работаете с конкретными данными, например, с временными рядами, вы можете захотеть индексировать ваши данные другим столбцом.

Технически говоря, данные, лежащие в основе DataFrame в Pandas, поддерживаются хеш-таблицей. Это похоже на то, как работают словари Python. Из-за этого использование индекса для поиска данных значительно ускоряет процесс по сравнению с поиском среди всех значений в столбце.
Примечание: Хотя технически индексы существуют и в колонках DataFrame (то есть вдоль оси 1), когда в этой статье упоминается индекс, я имею в виду только индекс строки.
Загрузка образца фрейма данных Pandas
Чтобы следовать этому руководству, я предоставил образец DataFrame Pandas ниже. Не стесняйтесь скопировать приведенный ниже код в свой любимый текстовый редактор, чтобы следовать дальше.
# Loading a Sample Pandas Dataframe
import pandas as pd
df = pd.DataFrame.from_dict({
'Name': ['Jane', 'Nik', 'Kate', 'Melissa'],
'Age': [10, 35, 34, 23],
'Height': [130, 178, 155, 133],
'Weight': [80, 200, 220, 150]
}).set_index('Name')
print(df)
# Returns:
# Age Height Weight
# Name
# Jane 10 130 80
# Nik 35 178 200
# Kate 34 155 220
# Melissa 23 133 150
В приведенном выше блоке кода мы использовали метод .head()
для вывода первых записей DataFrame. Здесь можно видеть, что теперь у нас есть DataFrame с индексом Name
и еще тремя колонками. Мы использовали метод .set_index()
, чтобы установить индекс DataFrame.
Теперь, когда у нас есть DataFrame для работы, давайте посмотрим, как мы можем использовать Pandas для удаления индексного столбца.
Удаление столбца индекса Pandas с использованием reset_index
Самый простой способ удалить индекс DataFrame в Pandas - использовать метод .reset_index()
Pandas. По умолчанию метод сбросит только индекс, создавая RangeIndex (от 0 до длины DataFrame минус 1). Этот прием также вставит индекс DataFrame в колонку в DataFrame.
Давайте посмотрим, как это выглядит:
# Resetting a dataframe index with .reset_index()
df = df.reset_index()
print(df.head())
# Returns:
# Name Age Height Weight
# 0 Jane 10 130 80
# 1 Nik 35 178 200
# 2 Kate 34 155 220
# 3 Melissa 23 133 150
# 4 Evan 70 195 140
Мы видим, что индексная колонка была заменена на RangeIndex, а оригинальные колонки были переданы в DataFrame как другая колонка.
Удаление столбца индекса Pandas и его удаление
Если мы хотим сбросить индекс DataFrame и не сохранять его, мы можем использовать аргумент drop=True
, указывая Pandas на необходимость сбросить индекс и удалить исходные значения. Давайте посмотрим, как это выглядит:
# Drop a Pandas Dataframe index with .reset_index() Method
df = df.reset_index(drop=True)
print(df.head())
# Returns:
# Age Height Weight
# 0 10 130 80
# 1 35 178 200
# 2 34 155 220
# 3 23 133 150
# 4 70 195 140
Здесь мы видим, что индекс DataFrame возвращается к поведению по умолчанию, и что оригинальный индекс полностью удаляется из DataFrame.
Удаление индекса Pandas из многоиндексного фрейма данных
Pandas также позволяет работать с DataFrame с мультииндексом, где DataFrame имеет более одного столбца, представляющего индекс. Это означает, что каждая запись представлена двумя или более уникальными идентификаторами. Давайте создадим пример DataFrame с мультииндексом:
# Creating a MultiIndex DataFrame
import pandas as pd
df = pd.DataFrame.from_dict({
'Gender': ['Female', 'Male', 'Female', 'Female'],
'Name': ['Jane', 'Nik', 'Kate', 'Melissa'],
'Age': [10, 35, 34, 23],
'Height': [130, 178, 155, 133],
'Weight': [80, 200, 220, 150]
}).set_index(['Gender', 'Name'])
print(df.head())
# Returns:
# Age Height Weight
# Gender Name
# Female Jane 10 130 80
# Male Nik 35 178 200
# Female Kate 34 155 220
# Melissa 23 133 150
Чтобы удалить оба индекса, вы можете просто вызвать метод .reset_index(drop=True)
. Однако, если вы хотите удалить только один индекс, вы должны использовать параметр level=
. Давайте посмотрим, как мы можем удалить индексную колонку 'Gender'
, сохраняя при этом значения:
# Dropping a Single MultiIndex and Keeping Values
df = df.reset_index(level='Gender')
print(df)
# Returns:
# Gender Age Height Weight
# Name
# Jane Female 10 130 80
# Nik Male 35 178 200
# Kate Female 34 155 220
# Melissa Female 23 133 150
В приведенном выше блоке кода мы использовали метод .reset_index()
, где указали удаление уровня Gender. В этом случае столбец индекса был перемещен из значений индекса в значения столбцов.
Удаление индекса Pandas из многоиндексного фрейма данных и удаление значений
Аналогично, при работе с многомерными DataFrames мы можем удалить только один столбец индекса и очистить все его значения. Для этого нам также нужно передать drop=True
, как показано ниже:
# Dropping a Single MultiIndex and Dropping Values
import pandas as pd
df = pd.DataFrame.from_dict({
'Gender': ['Female', 'Male', 'Female', 'Female'],
'Name': ['Jane', 'Nik', 'Kate', 'Melissa'],
'Age': [10, 35, 34, 23],
'Height': [130, 178, 155, 133],
'Weight': [80, 200, 220, 150]
}).set_index(['Gender', 'Name'])
df = df.reset_index(level='Gender', drop=True)
print(df)
# Returns:
# Age Height Weight
# Name
# Jane 10 130 80
# Nik 35 178 200
# Kate 34 155 220
# Melissa 23 133 150
В приведенном выше блоке кода, вместо того чтобы добавлять столбец в DataFrame, он удаляется и исключается из данных. Это может быть полезно, если данные не нужны, и вы хотите уменьшить сложность данных.
В следующем разделе вы узнаете, как использовать метод .set_index()
в Pandas для удаления индекса DataFrame.
Удаление столбца индекса Pandas с помощью set_index
Мы также можем удалить существующий индекс DataFrame, перезаписав его новыми значениями с помощью метода
Мы также можем использовать обходной путь, установив индекс с помощью столбца, который просто копирует обычный паттерн индекса. Мы можем сделать это, создав столбец, который содержит значения от 0 до длины списка минус 1. Это можно сделать напрямую с использованием метода .assign()
, который можно использовать для добавления столбца в DataFrame Pandas. Затем мы используем метод .set_index()
для установки этого нового столбца в качестве индекса DataFrame.
Давайте посмотрим, как это выглядит:
# Delete a Pandas Dataframe Index with .set_index()
df = df.assign(Index=range(len(df))).set_index('Index')
print(df.head())
# Returns:
# Age Height Weight
# 0 10 130 80
# 1 35 178 200
# 2 34 155 220
# 3 23 133 150
# 4 70 195 140
В этом примере сначала создаётся столбец с названием «Index» с использованием метода .assign()
. После этого к нему применяется метод .set_index()
, который назначает этот новый столбец в качестве индекса. Это приводит к перезаписи и удалению предыдущего индекса.
В следующем разделе вы узнаете, как считать файл CSV в DataFrame Pandas без встроенного индекса.
Чтение CSV-файла в DataFrame Pandas без индекса
Вы можете столкнуться с неправильно сформированными CSV-файлами, например, с теми, в которых разделитель находится в конце данной строки. Они могут выглядеть следующим образом:
Age,Height,Weight
10,130,80,
35,178,200,
34,155,220,
23,133,150,
70,195,140,
55,150,95,
89,205,180,
Из-за наличия завершающей запятой, Pandas неправильно интерпретирует первые значения как значения индекса. Когда мы считываем файл в DataFrame, он будет выглядеть так:
# Reading a malformed .csv file with Pandas
df = pd.read_csv('file.csv')
print(df.head())
# Returns:
# Age Height Weight
# 10 130 80 NaN
# 35 178 200 NaN
# 34 155 220 NaN
# 23 133 150 NaN
# 70 195 140 NaN
Конечно, это не то, что нам нужно. Мы хотели бы, чтобы данные были правильно выровнены по столбцам так, чтобы в конце возвращался пустой столбец. Поскольку такие файлы часто можно встретить, Pandas представил параметр, который позволяет перезаписать поведение по умолчанию при использовании
Давайте посмотрим, что произойдет, если мы передадим index_col = False
в нашу функцию:
# Reading a malformed CSV file correctly with Pandas
df = pd.read_csv('file.csv', index_col=False)
print(df.head())
# Returns:
# Age Height Weight
# 0 10 130 80
# 1 35 178 200
# 2 34 155 220
# 3 23 133 150
# 4 70 195 140
Используя аргумент index_col=False
, Pandas изменяет поведение по умолчанию и назначает правильный индекс.
Заключение
В этом учебнике вы научились использовать Pandas для удаления индексного столбца. Вы узнали, как использовать методы Pandas .reset_index()
и .set_index()
для удаления индекса. Вы также научились как читать, так и записывать CSV-файл в DataFrame Pandas. Умение работать с индексами в Pandas является полезным навыком, поскольку вы учитесь манипулировать данными с помощью Pandas.
Чтобы узнать больше о методе .reset_index()
в Pandas, ознакомьтесь с официальной документацией здесь
Дополнительные ресурсы
Чтобы узнать больше о подобных темах, ознакомьтесь с некоторыми из этих статей по теме:
Индекс переименования Pandas: как переименовать индекс Dataframe Pandas
Индекс сброса Pandas: как сбросить индекс Pandas
Изменение порядка столбцов Pandas: переиндексация Pandas и вставка Pandas
4 способа использования Pandas для выбора столбцов в кадре данных
Last updated