df = DataFrame.reset_index(level=None, *, drop=False, inplace=False, col_level=0, col_fill='', names=None, allow_duplicates=False) s = Series.reset_index(level=None, *, drop=False, name=no_default, inplace=False)
level=None
- для DataFrame
/Series
с MultiIndex
. Удаляет из индекса только указанные уровни. По умолчанию удаляет все уровни.drop=False
- просто сбрасывает индекс, и вставляет его в качестве столбца в новый DataFrame
. При этом индекс восстанавливается до целочисленного индекса по умолчанию. Если True
, то индекс НЕ вставляется в качестве столбца. inplace=False
- следует ли изменять фрейм данных вместо создания нового.col_level=0
- если столбцы имеют несколько уровней, то определяет, на какой уровень вставляются метки. По умолчанию они вставляются на первый уровень. НЕ используется в Series
.col_fill=''
- если столбцы имеют несколько уровней, то определяет, как будут называться другие уровни. Если нет, то имя индекса повторяется.allow_duplicates=False
- разрешает/запрещает создание повторяющихся меток столбцов. НЕ используется в Series
.names=None
- строка для переименование столбца DataFrame
, который содержит данные индекса. Если DataFrame
имеет MultiIndex
, то это должен быть список или кортеж с длиной, равной количеству уровней. НЕ используется в Series
.Методы DataFrame.reset_index()
и Series.reset_index()
модуля pandas
сбрасывают индекс или его уровень и использует вместо него индекс по умолчанию.
Если DataFrame
имеет MultiIndex
, то этот метод может удалить один или несколько уровней.
DataFrame.reset_index()
>>> import pandas as pd df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)], index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', 'max_speed')) >>> df # class max_speed # falcon bird 389.0 # parrot bird 24.0 # lion mammal 80.5 # monkey mammal NaN
Когда сбрасывается индекс, старый индекс добавляется в виде столбца, и используется новый последовательный индекс по умолчанию:
>>> df.reset_index() # index class max_speed # 0 falcon bird 389.0 # 1 parrot bird 24.0 # 2 lion mammal 80.5 # 3 monkey mammal NaN
Можно использовать аргумент drop
, чтобы избежать добавления старого индекса в качестве столбца:
>>> df.reset_index(drop=True) # class max_speed # 0 bird 389.0 # 1 bird 24.0 # 2 mammal 80.5 # 3 mammal NaN
Также можно использовать метод DataFrame.reset_index()
с MultiIndex
.
index = pd.MultiIndex.from_tuples([('bird', 'falcon'), ('bird', 'parrot'), ('mammal', 'lion'), ('mammal', 'monkey')], names=['class', 'name']) columns = pd.MultiIndex.from_tuples([('speed', 'max'), ('species', 'type')]) df = pd.DataFrame([(389.0, 'fly'), (24.0, 'fly'), (80.5, 'run'), (np.nan, 'jump')], index=index, columns=columns) >>> df # speed species # max type # class name # bird falcon 389.0 fly # parrot 24.0 fly # mammal lion 80.5 run # monkey NaN jump
С помощью аргумента names
выберем имя для столбца индекса:
>>> df.reset_index(names=['classes', 'names']) # classes names speed species # max type # 0 bird falcon 389.0 fly # 1 bird parrot 24.0 fly # 2 mammal lion 80.5 run # 3 mammal monkey NaN jump
Если индекс имеет несколько уровней, то можно сбросить их подмножество:
>>> df.reset_index(level='class') # class speed species # max type # name # falcon bird 389.0 fly # parrot bird 24.0 fly # lion mammal 80.5 run # monkey mammal NaN jump
Если индекс НЕ отбрасывается, то по умолчанию он помещается на верхний уровень. Можно разместить его на другом уровне:
>>> df.reset_index(level='class', col_level=1) # speed species # class max type # name # falcon bird 389.0 fly # parrot bird 24.0 fly # lion mammal 80.5 run # monkey mammal NaN jump
Когда индекс вставляется на другой уровень, то можно указать, под каким, используя аргумент col_fill
:
>>> df.reset_index(level='class', col_level=1, col_fill='species') # species speed species # class max type # name # falcon bird 389.0 fly # parrot bird 24.0 fly # lion mammal 80.5 run # monkey mammal NaN jump
Если указать несуществующий уровень для col_fill
, то он создается:
>>> df.reset_index(level='class', col_level=1, col_fill='genus') # genus speed species # class max type # name # falcon bird 389.0 fly # parrot bird 24.0 fly # lion mammal 80.5 run # monkey mammal NaN jump
Series.reset_index()
>>> import pandas as pd s = pd.Series([1, 2, 3, 4], name='foo', index=pd.Index(['a', 'b', 'c', 'd'], name='idx')) >>> s # idx # a 1 # b 2 # c 3 # d 4 # Name: foo, dtype: int64
Создадим DataFrame
с индексом по умолчанию.
>>> s.reset_index() # idx foo # 0 a 1 # 1 b 2 # 2 c 3 # 3 d 4
Чтобы указать имя нового столбца, используем аргумент name
.
>>> s.reset_index(name='values') # idx values # 0 a 1 # 1 b 2 # 2 c 3 # 3 d 4
Чтобы создать новую серию с индексом по умолчанию, используем аргумент drop=True
.
>>> s.reset_index(drop=True) # 0 1 # 1 2 # 2 3 # 3 4 # Name: foo, dtype: int64
Аргумент level
используется для Series
с многоуровневым индексом.
>>> import numpy as np arrays = [np.array(['bar', 'bar', 'baz', 'baz']), np.array(['one', 'two', 'one', 'two'])] s2 = pd.Series( range(4), name='foo', index=pd.MultiIndex.from_arrays(arrays, names=['a', 'b'])) >>> s2 # a b # bar one 0 # two 1 # baz one 2 # two 3 # Name: foo, dtype: int64
Чтобы удалить определенный уровень из индекса, используем level
.
>>> s2.reset_index(level='a') # a foo # b # one bar 0 # two bar 1 # one baz 2 # two baz 3
Если уровень level
не задан, то из индекса удаляются все уровни.
>>> s2.reset_index() # a b foo # 0 bar one 0 # 1 bar two 1 # 2 baz one 2 # 3 baz two 3