df = DataFrame.set_index(keys, *, drop=True, append=False, inplace=False, verify_integrity=False)
keys
- может быть ключом одного столбца, одним массивом той же длины, что и вызывающий DataFrame
, или списком, содержащим произвольную комбинацию ключей столбцов и массивов. Здесь "массив" включает в себя Series
, Index
, numpy.ndarray
и экземпляры от collections.abc.Iterator
.drop=True
- удалять ли столбцы, которые будут использоваться в качестве нового индекса.append=False
- добавлять ли столбцы в существующий индекс.inplace=False
- следует ли изменять DataFrame
вместо создания нового. verify_integrity=False
- проверять или нет новый индекс на наличие дубликатов. Установка значения False
улучшает производительность.DataFrame
с измененными метками строк или None
, если inplace=True
.Метод DataFrame.set_index()
модуля pandas
устанавливает индекс DataFrame
(метки строк), используя один или несколько существующих столбцов или массивов "правильной длины" (len(DataFrame.index)
). Индекс может заменить существующий индекс или расширить его.
DataFrame.set_index()
В примерах используется DataFrame
следующего вида:
>>> import pandas as pd df = pd.DataFrame({'month': [1, 4, 7, 10], 'year': [2012, 2014, 2013, 2014], 'sale': [55, 40, 84, 31]}) >>> df # month year sale # 0 1 2012 55 # 1 4 2014 40 # 2 7 2013 84 # 3 10 2014 31
Установим в качестве индекса DataFrame
столбец 'month'
:
>>> df.set_index('month') # year sale # month # 1 2012 55 # 4 2014 40 # 7 2013 84 # 10 2014 31
Создадим MultiIndex
, используя столбцы 'year'
и 'month'
:
>>> df.set_index(['year', 'month']) # sale # year month # 2012 1 55 # 2014 4 40 # 2013 7 84 # 2014 10 31
Создадим MultiIndex
используя объект Index
и столбец 'year'
:
>>> df.set_index([pd.Index([1, 2, 3, 4]), 'year']) # month sale # year # 1 2012 1 55 # 2 2014 4 40 # 3 2013 7 84 # 4 2014 10 31
Создадим MultiIndex
с помощью двух Series
:
>>> s = pd.Series([1, 2, 3, 4]) >>> df.set_index([s, s**2]) # month year sale # 1 1 1 2012 55 # 2 4 4 2014 40 # 3 9 7 2013 84 # 4 16 10 2014 31