Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
Last updated
Last updated
В этом уроке вы научитесь использовать Pandas для удаления столбца индекса. Удаление столбца индекса в DataFrame Pandas позволяет избавиться от нежелательных столбцов или перестроить ваш набор данных значимым образом. Вы научитесь делать это с помощью метода .reset_index()
DataFrame, метода .set_index()
, а также как читать и записывать файлы CSV без индекса.
При создании DataFrame библиотека Pandas пытается определить столбец индекса автоматически. Хотя во многих случаях индексы оказываются уместными, бывают ситуации, когда вам может потребоваться удалить индекс. Pandas предлагает множество удобных способов сделать это, как после загрузки DataFrame, так и до её начала.
В приведенном ниже обзоре вы узнаете, как удалять столбец индекса в DataFrame библиотеки Pandas.
Быстрый ответ: Используйте Pandas .reset_index(drop=True)
, чтобы удалить столбец индекса
Содержание
Conclusion
Additional Resources
Индекс в Pandas аналогичен номеру строки в Excel. Однако сказать только это было бы недооценкой индекса. Это потому, что он гораздо больше, чем просто номер строки. Мы можем думать об индексе строки как о способе доступа к записям DataFrame – подобно адресу или ключу словаря.
По умолчанию, если конкретный индекс не передается, Pandas автоматически генерирует индекс. Этот индекс начинается с числа 0 и доходит до длины DataFrame минус 1. Такой тип индекса называется RangeIndex (поскольку он представляет значения из функции диапазона). Однако, если вы работаете с конкретными данными, например, с временными рядами, вы можете захотеть индексировать ваши данные другим столбцом.
Технически говоря, данные, лежащие в основе DataFrame в Pandas, поддерживаются хеш-таблицей. Это похоже на то, как работают словари Python. Из-за этого использование индекса для поиска данных значительно ускоряет процесс по сравнению с поиском среди всех значений в столбце.
Примечание: Хотя технически индексы существуют и в колонках DataFrame (то есть вдоль оси 1), когда в этой статье упоминается индекс, я имею в виду только индекс строки.
Чтобы следовать этому руководству, я предоставил образец DataFrame Pandas ниже. Не стесняйтесь скопировать приведенный ниже код в свой любимый текстовый редактор, чтобы следовать дальше.
В приведенном выше блоке кода мы использовали метод .head()
для вывода первых записей DataFrame. Здесь можно видеть, что теперь у нас есть DataFrame с индексом Name
и еще тремя колонками. Мы использовали метод .set_index()
, чтобы установить индекс DataFrame.
Теперь, когда у нас есть DataFrame для работы, давайте посмотрим, как мы можем использовать Pandas для удаления индексного столбца.
Самый простой способ удалить индекс DataFrame в Pandas - использовать метод .reset_index()
Pandas. По умолчанию метод сбросит только индекс, создавая RangeIndex (от 0 до длины DataFrame минус 1). Этот прием также вставит индекс DataFrame в колонку в DataFrame.
Давайте посмотрим, как это выглядит:
Мы видим, что индексная колонка была заменена на RangeIndex, а оригинальные колонки были переданы в DataFrame как другая колонка.
Если мы хотим сбросить индекс DataFrame и не сохранять его, мы можем использовать аргумент drop=True
, указывая Pandas на необходимость сбросить индекс и удалить исходные значения. Давайте посмотрим, как это выглядит:
Здесь мы видим, что индекс DataFrame возвращается к поведению по умолчанию, и что оригинальный индекс полностью удаляется из DataFrame.
Pandas также позволяет работать с DataFrame с мультииндексом, где DataFrame имеет более одного столбца, представляющего индекс. Это означает, что каждая запись представлена двумя или более уникальными идентификаторами. Давайте создадим пример DataFrame с мультииндексом:
Чтобы удалить оба индекса, вы можете просто вызвать метод .reset_index(drop=True)
. Однако, если вы хотите удалить только один индекс, вы должны использовать параметр level=
. Давайте посмотрим, как мы можем удалить индексную колонку 'Gender'
, сохраняя при этом значения:
В приведенном выше блоке кода мы использовали метод .reset_index()
, где указали удаление уровня Gender. В этом случае столбец индекса был перемещен из значений индекса в значения столбцов.
Аналогично, при работе с многомерными DataFrames мы можем удалить только один столбец индекса и очистить все его значения. Для этого нам также нужно передать drop=True
, как показано ниже:
В приведенном выше блоке кода, вместо того чтобы добавлять столбец в DataFrame, он удаляется и исключается из данных. Это может быть полезно, если данные не нужны, и вы хотите уменьшить сложность данных.
В следующем разделе вы узнаете, как использовать метод .set_index()
в Pandas для удаления индекса DataFrame.
Мы также можем удалить существующий индекс DataFrame, перезаписав его новыми значениями с помощью метода
Мы также можем использовать обходной путь, установив индекс с помощью столбца, который просто копирует обычный паттерн индекса. Мы можем сделать это, создав столбец, который содержит значения от 0 до длины списка минус 1. Это можно сделать напрямую с использованием метода .assign()
, который можно использовать для добавления столбца в DataFrame Pandas. Затем мы используем метод .set_index()
для установки этого нового столбца в качестве индекса DataFrame.
Давайте посмотрим, как это выглядит:
В этом примере сначала создаётся столбец с названием «Index» с использованием метода .assign()
. После этого к нему применяется метод .set_index()
, который назначает этот новый столбец в качестве индекса. Это приводит к перезаписи и удалению предыдущего индекса.
В следующем разделе вы узнаете, как считать файл CSV в DataFrame Pandas без встроенного индекса.
Вы можете столкнуться с неправильно сформированными CSV-файлами, например, с теми, в которых разделитель находится в конце данной строки. Они могут выглядеть следующим образом:
Из-за наличия завершающей запятой, Pandas неправильно интерпретирует первые значения как значения индекса. Когда мы считываем файл в DataFrame, он будет выглядеть так:
Конечно, это не то, что нам нужно. Мы хотели бы, чтобы данные были правильно выровнены по столбцам так, чтобы в конце возвращался пустой столбец. Поскольку такие файлы часто можно встретить, Pandas представил параметр, который позволяет перезаписать поведение по умолчанию при использовании
Давайте посмотрим, что произойдет, если мы передадим index_col = False
в нашу функцию:
Используя аргумент 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 для выбора столбцов в кадре данных