pandas.Series.swaplevel#

Series.swaplevel(i=-2, j=-1, copy=None)[源代码]#

交换 MultiIndex 中的级别 i 和 j。

默认是将索引的最后两个层级进行交换。

Parameters:
i, jint 或 str

要交换的索引层级。可以传递层级名称作为字符串。

copybool, default True

是否复制底层数据。

备注

copy 关键字在 pandas 3.0 中将更改行为。Copy-on-Write 将默认启用,这意味着所有带有 copy 关键字的方法都将使用惰性复制机制来延迟复制并忽略 copy 关键字。copy 关键字将在 pandas 的未来版本中移除。

通过启用 copy on write pd.options.mode.copy_on_write = True,您可以获得未来的行为和改进。

Returns:
Series

在 MultiIndex 中交换了级别的 Series。

Examples

>>> s = pd.Series(
...     ["A", "B", "A", "C"],
...     index=[
...         ["Final exam", "Final exam", "Coursework", "Coursework"],
...         ["History", "Geography", "History", "Geography"],
...         ["January", "February", "March", "April"],
...     ],
... )
>>> s
Final exam  History     January      A
            Geography   February     B
Coursework  History     March        A
            Geography   April        C
dtype: object

在以下示例中,我们将交换索引的层级。在这里,我们将逐列交换层级,但逐行交换层级的方法类似。请注意,逐列是默认行为。通过不提供 i 和 j 的任何参数,我们交换了最后两个索引。

>>> s.swaplevel()
Final exam  January     History         A
            February    Geography       B
Coursework  March       History         A
            April       Geography       C
dtype: object

通过提供一个参数,我们可以选择要与最后一个索引交换哪个索引。例如,我们可以按如下方式交换第一个和最后一个索引。

>>> s.swaplevel(0)
January     History     Final exam      A
February    Geography   Final exam      B
March       History     Coursework      A
April       Geography   Coursework      C
dtype: object

我们还可以通过同时为 i 和 j 提供值来明确指定要交换的索引。例如,在这里我们交换了第一个和第二个索引。

>>> s.swaplevel(0, 1)
History     Final exam  January         A
Geography   Final exam  February        B
History     Coursework  March           A
Geography   Coursework  April           C
dtype: object