pandas.DataFrame.set_index#

DataFrame.set_index(keys, *, drop=True, append=False, inplace=False, verify_integrity=False)[源代码][源代码]#

使用现有列设置 DataFrame 索引。

使用一个或多个现有列或数组(长度正确)设置 DataFrame 索引(行标签)。索引可以替换现有索引或在现有索引基础上扩展。

参数:
标签或类数组或标签/数组的列表

此参数可以是单个列键、与调用 DataFrame 长度相同的单个数组,或包含列键和数组任意组合的列表。这里,“数组”包括 SeriesIndexnp.ndarrayIterator 的实例。

删除布尔值, 默认为 True

删除要作为新索引的列。

追加布尔值, 默认为 False

是否将列附加到现有索引。

inplace布尔值, 默认为 False

是否修改 DataFrame 而不是创建一个新的。

verify_integrity布尔值, 默认为 False

检查新索引中的重复项。否则将检查推迟到必要时。设置为 False 将提高此方法的性能。

返回:
DataFrame 或 None

如果 inplace=True,则更改行标签或为 None。

参见

DataFrame.reset_index

与 set_index 相反。

DataFrame.reindex

更改到新的索引或扩展索引。

DataFrame.reindex_like

更改为与其他 DataFrame 相同的索引。

例子

>>> 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

将索引设置为成为 ‘month’ 列:

>>> df.set_index("month")
       year  sale
month
1      2012    55
4      2014    40
7      2013    84
10     2014    31

使用列 ‘year’ 和 ‘month’ 创建一个 MultiIndex:

>>> df.set_index(["year", "month"])
            sale
year  month
2012  1     55
2014  4     40
2013  7     84
2014  10    31

使用索引和一列创建一个 MultiIndex:

>>> 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

使用两个 Series 创建一个 MultiIndex:

>>> 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