Pandas.DataFrame.sort_index() 索引排序 详解 含代码 含测试数据集 随Pandas版本持续更新

本文基于pandas2.2.0,详细介绍了Pandas.DataFrame.sort_index()方法。阐述了该方法的语法、返回值,对各参数如axis、level、ascending等进行说明,还列举了相关方法和多个示例,帮助理解该方法的使用。
部署运行你感兴趣的模型镜像

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

Pandas.DataFrame.sort_index()

DataFrame.sort_index() 方法用于沿 指定轴DataFrame 排序。

  • 如果,你对 的概念很抓狂,可以简单理解为,是用 行索引(index) 排序,还是用 列名(labels) 排序。

语法:

DataFrame.sort_index (*, axis=0, level=None, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’, sort_remaining=True, ignore_index=False, key=None)

返回值:

  • DataFrame or None
    • 如果 inplace=True 则在原始 DataFrame 原地排序,并返回 None
    • 如果 inplace=False 则生成、并返回、新的、排序后的的 DataFrame 对象。

参数说明:

axis 指定轴(指定用行索引排序,还是用列名排序)

  • axis:{0 or ‘index’, 1 or ‘columns’}, default 0 例1

    用于指定沿哪个轴进行排序,默认 axis=0

    • 0index : 纵向、用行索引(index)排序。
    • 1comumns : 横向、用列名(labels)排序。

level 指定索引或列名的排序参考层级

  • level: int or level name or list of ints or list of level names 例2

    level 参数一般用于指定 多层索引、列名 中的某个级别,作为主要的排序依据。

    • int or level name: 可以用 整数层级编号 指定,也可以用 层级的名字 指定。
    • list of ints: 可以用整数层级编号组成的列表,指定多个层级。
    • list of level names: 可以用层级的名字组成的列表,指定多个层级。
    • ⚠️ 注意 :

      • 如果指定了多个层级,这些层级必须在同一个轴上。(不能同时指定行索引、列名的层级)
      • 多层索引、列名,在没有指定 level 参数的情况下,默认以指定轴的第 0 层的索引排序。
      • 如果用列表指定了多个层级,列表中第1个出现的层级,将作为主要排序参考。

在这里插入图片描述

ascending 排序方法(升序或降序)

  • ascending: bool or list-like of bools, default True 例3

    ascending 参数用于指定排序方法(升序或降序),默认ascending=True 表示使用升序:

    • bool: 默认ascending=True 表示升序。ascending=False 则降序。
    • list-like of bools: 当索引具有多个层次,可以用列表的形式指定每个层级的排序方法。
    • ⚠️ 注意 :

      • 如果使用了 level 参数,并且你还想以 list-like of bools 的方式精准控制每个层级的升序降序方法,那么二者的元素数量必须等长,否则会引发报错:ValueError: level must have same length as ascending
      • level 参数 传递的成绩列表 和 list-like of bools传递的布尔值列表,二者元素是一一对应的关系。例如:df.sort_index(axis=0, level=[1,0], ascending=[False, True]) 意味着层级1是降序,层级0是升序。

inplace 原地生效

  • inplace: bool, default False 例4

    inplace 参数用于指是否在原始数据里进行修改,默认 inplace=False

    • True: 在原始 DataFrame 原地排序,并返回 None
    • False: 生成、并返回、新的、排序后的的 DataFrame 对象。

kind 排序算法

  • kind: {‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, default ‘quicksort’ 例5

    kind 参数用于指定排序算法,默认使用 'quicksort' 快速排序:

    • ‘quicksort’: 快速排序 这是默认的排序算法。它是一种快速但不稳定的排序算法,通常是大多数情况下的最佳选择。它具有较好的平均性能,但在最坏情况下的性能可能较差。
    • ‘mergesort’: 归并排序 是一种稳定的排序算法,它适用于大型数据集。它的主要特点是在任何情况下都具有稳定的性能,但可能会比快速排序慢一些。归并排序适用于需要稳定排序的情况。
    • ‘heapsort’: 堆排序 是一种不稳定的排序算法,它对内存的要求相对较低。堆排序通常在性能方面略逊于快速排序,但对于大型数据集而言,它可能比归并排序更具有竞争力。
    • ‘stable’: 稳定排序 是一种特殊的排序,它保持相等元素的相对顺序。在 Pandas 中,如果你希望在多列或多层索引上进行排序时保持相对顺序,可以选择使用 'stable'。请注意,稳定排序通常会导致一些性能损失。
    • ⚠️ 注意 :

      • kind 参数,只有在对单个层级的行索引、列名,进行排序时才会生效。

na_position 缺失值堆放位置

  • na_position: {‘first’, ‘last’}, default ‘last’ 例6

    na_position 参数用于指定索引、列名中存在缺失值,这些缺失值排序后的堆放位置,默认na_position='last'

    • ‘first’: 缺失值放在排序结果最上面。
    • ‘last’: 缺失值放在排序结果最下面。
    • ⚠️ 注意 :

      • 在多层索引、列名中此参数不可用。

sort_remaining 其他排序置

  • sort_remaining: bool, default True 例7

    sort_remaining 参数用于指当按照指定的层级排序后,其他同轴层级是否也进行排序。默认 sort_remaining=True 表示没指定的同轴其他层级,也会自动排序:

    • True: 同轴其他层级也会排序。
    • False: 同轴其他层级不会排序。

ignore_index 轴忽略

  • ignore_index: bool, default False 例8

    ignore_index 参数用于指定,排序后,在结果中是否忽略原来的索引、列名内容。

    • True: ignore_index=True ,将会在排序后,舍弃掉 axis 参数指定轴上所有层级的的索引,并标记为从0到n-1的自然索引。
    • False: 不忽略。

key 排序前函数调用

  • key: callable, optional 例9

    可以在排序之前,调用一个函数来处理制定轴的索引内容。

    对于多层索引或多层列名,key 并没有提供选择层级的方法,调用的函数,将应用于指定轴的所有层级。

相关方法:

➡️ 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png


例1:指定用于排序的轴

import pandas as pd

# 构建演示数据
data = {'B':[1, 2, 3, 4, 5], 'A':[6, 7, 8, 9, 10]}
idx = pd.Index([100, 29, 234, 1, 150], name='index')
df = pd.DataFrame(data, index=idx)

# 观察数据内容
df
# ...       B	A
# ... index
# ... 100	1	6
# ... 29	2	7
# ... 234	3	8
# ... 1	    4	9
# ... 150	5	10


# 用行索引排序
df1 = df.sort_index()  # 等效于df = df.sort_index(axis=0)
df1
# ... 	    B	A
# ... index		
# ... 1	    4	9
# ... 29	2	7
# ... 100	1	6
# ... 150	5	10
# ... 234	3	8


# 用列名排序
df2 = df.sort_index(axis=1)
df2
# ...       A	B
# ... index		
# ... 100	6	1
# ... 29	7	2
# ... 234	8	3
# ... 1  	9	4
# ... 150	10	5


例2:指定索引或列名的级别

  • 1、构建演示数据并观察其内容
import pandas as pd

# 构建演示数据
tuples = [
   ('1', 'a'), ('1', 'b'),
   ('3', 'b'), ('3', 'a'),
   ('2', 'a'), ('2', 'b')
]
index = pd.MultiIndex.from_tuples(tuples,names=['职业','种族'])
values = [[9, 20], [10, 18], [6, 23],
        [7, 25], [4, 30], [3, 35]]
df = pd.DataFrame(values, columns=[['属性1','属性2'], ['攻速','攻击力']], index=index)

# 观察原始数据
df
属性1属性2
攻速攻击力
职业种族
1a920
b1018
3b623
a725
2a430
b335
  • 2、如果用列表指定了多个层级,在列表中第一个出现的层级,将作为主要排序参考。
df2 = df.sort_index(axis=0, level=[1,0])
df2
BA
index
1.049
29.027
100.016
NaN38
NaN510

有上面结果可以发现,在用列表同时指定了 职业、种族两个层级的情况下。

因为代表种族的层级编号1,出现在列表里的第1个位置。所以排序的结果,主要是以种族为标准进行的。


例3:指定排序方法(升序或降序)

  • 1、如果索引只有一层,传递一个布尔值即可。
import pandas as pd

# 构建演示数据
data = {'B':[1, 2, 3, 4, 5], 'A':[6, 7, 8, 9, 10]}
idx = pd.Index([100, 29, 234, 1, 150], name='index')
df = pd.DataFrame(data, index=idx)

# 观察数据内容
df
# ...       B	A
# ... index
# ... 100	1	6
# ... 29	2	7
# ... 234	3	8
# ... 1	    4	9
# ... 150	5	10


# 指定排序方法为降序
df1 = df.sort_index(axis=0,ascending=False)
df1
# ... 	    B	A
# ... index		
# ... 234	3	8
# ... 150	5	10
# ... 100	1	6
# ...  29	2	7
# ...   1	4	9
  • 2、如果索引有多个层级,可以使用布尔值组成的列表,控制每个层级的排序方法(不传递列表,则同轴所有层级都保持默认升序,或指定的排序方法)
import pandas as pd

# 构建演示数据
tuples = [
   ('1', 'a'), ('1', 'b'),
   ('3', 'b'), ('3', 'a'),
   ('2', 'a'), ('2', 'b')
]
index = pd.MultiIndex.from_tuples(tuples,names=['职业','种族'])
values = [[9, 20], [10, 18], [6, 23],
        [7, 25], [4, 30], [3, 35]]
df = pd.DataFrame(values, columns=[['属性1','属性2'], ['攻速','攻击力']], index=index)

# 观察原始数据
df
# ... 	           属性1	属性2
# ...               攻速	攻击力
# ... 职业	种族		
# ...   1	   a	  9	      20
# ...          b	 10	      18
# ...   3	   b	  6	      23
# ...          a	  7	      25
# ...   2	   a	  4	      30
# ...          b	  3       35


# 指定排序以种族为准,并指定种族降序,职业升序
df1 = df.sort_index(axis=0, level=[1,0], ascending=[False, True])
df1
# ... 	         属性1	属性2
# ...             攻速	攻击力
# ... 职业	种族		
# ... 1	      b	   10	18
# ... 2	      b	   3	35
# ... 3   	  b	   6	23
# ... 1	      a	   9	20
# ... 2	      a	   4	30
# ... 3	      a	   7	25


# 不传递列表,只传递布尔值,同轴所有层级都是用一样的排序方法
df2 = df.sort_index(axis=0, ascending=False)
df2
# ...             属性1	属性2
# ...             攻速	攻击力
# ... 职业	种族		
# ...   3	   b	6	23
# ...          a	7	25
# ...   2	   b	3	35
# ...          a	4	30
# ...   1	   b	10	18
# ...          a	9	20


例4:原地生效

import pandas as pd

# 构建演示数据
data = {'B':[1, 2, 3, 4, 5], 'A':[6, 7, 8, 9, 10]}
idx = pd.Index([100, 29, 234, 1, 150], name='index')
df = pd.DataFrame(data, index=idx)

# 观察数据内容
df
# ...       B	A
# ... index
# ... 100	1	6
# ... 29	2	7
# ... 234	3	8
# ... 1	    4	9
# ... 150	5	10


# 指定排序方法为降序,并原地生效
df.sort_index(axis=0, ascending=False, inplace=True)
df
# ... 	    B	A
# ... index		
# ... 234	3	8
# ... 150	5	10
# ... 100	1	6
# ...  29	2	7
# ...   1	4	9


例5:指定排序算法,注意!kind参数只有对单个层级排序时才会生效。

import pandas as pd

# 构建演示数据
tuples = [
   ('1', 'a'), ('1', 'b'),
   ('3', 'b'), ('3', 'a'),
   ('2', 'a'), ('2', 'b')
]
index = pd.MultiIndex.from_tuples(tuples,names=['职业','种族'])
values = [[9, 20], [10, 18], [6, 23],
        [7, 25], [4, 30], [3, 35]]
df = pd.DataFrame(values, columns=[['属性1','属性2'], ['攻速','攻击力']], index=index)

# 观察原始数据
df
# ... 	           属性1	属性2
# ...               攻速	攻击力
# ... 职业	种族		
# ...   1	   a	  9	      20
# ...          b	 10	      18
# ...   3	   b	  6	      23
# ...          a	  7	      25
# ...   2	   a	  4	      30
# ...          b	  3       35


# 指定排序以种族为准,并指定种族降序,职业升序
df1 = df.sort_index(axis=0, level=1, kind='mergesort', ascending=False)
df1
# ... 	         属性1	属性2
# ...             攻速	攻击力
# ... 职业	种族		
# ... 1	      b	   10	18
# ... 2	      b	   3	35
# ... 3   	  b	   6	23
# ... 1	      a	   9	20
# ... 2	      a	   4	30
# ... 3	      a	   7	25


例6:缺失值堆放位置

import pandas as pd
import numpy as np

# 构建演示数据
data = {'B':[1, 2, 3, 4, 5], 'A':[6, 7, 8, 9, 10]}
idx = pd.Index([100, 29, np.nan, 1, np.nan], name='index')
df = pd.DataFrame(data, index=idx)

# 观察数据内容
df
# ...       B	A
# ... index
# ... 100	1	6
# ... 29	2	7
# ... NaN	3	8
# ... 1	    4	9
# ... NaN	5	10


# 排序,并指定缺失值排在最上面
df.sort_index(axis=0, na_position='first', inplace=True)
df
# ...       B	A
# ... index
# ... NaN	3	8
# ... NaN	5	10
# ... 1	    4	9
# ... 29	2	7
# ... 100	1	6


例7:指定其他同轴的层级,不跟随排序

  • 1、构建数据并观察内容
import pandas as pd

# 构建演示数据
tuples = [
   ('1', 'a'), ('1', 'b'),
   ('3', 'b'), ('3', 'a'),
   ('2', 'a'), ('2', 'b')
]
index = pd.MultiIndex.from_tuples(tuples,names=['职业','种族'])
values = [[9, 20], [10, 18], [6, 23],
        [7, 25], [4, 30], [3, 35]]
df = pd.DataFrame(values, columns=[['属性1','属性2'], ['攻速','攻击力']], index=index)

# 观察原始数据
df
属性1属性2
攻速攻击力
职业种族
1a920
b1018
3b623
a725
2a430
b335
  • 2、默认情况下,如果对行索引层级 ‘种族’ 进行排序,那么行索引层级 '职业’也会跟着排序,例如:
df1 = df.sort_index(axis=0, level='种族')
df1
属性1属性2
攻速攻击力
职业种族
1a920
2a430
3a725
1b1018
2b335
3b623

由上面结果可以发现,同轴行索引层级 ‘职业’ 也尽可能的进行了排序。

  • 3、指定其他同轴层级,不跟随排序
df2 = df.sort_index(axis=0, level='种族', sort_remaining=False)
df2
属性1属性2
攻速攻击力
职业种族
1a920
3a725
2a430
1b1018
3b623
2b335

由上面结果可以发现,由于 sort_remaining=False 同轴行索引层级 ‘职业’ 没有进行排序。


例8:排序后舍弃索引对象

import pandas as pd

# 构建演示数据
tuples = [
   ('1', 'a'), ('1', 'b'),
   ('3', 'b'), ('3', 'a'),
   ('2', 'a'), ('2', 'b')
]
index = pd.MultiIndex.from_tuples(tuples,names=['职业','种族'])
values = [[9, 20], [10, 18], [6, 23],
        [7, 25], [4, 30], [3, 35]]
df = pd.DataFrame(values, columns=[['属性1','属性2'], ['攻速','攻击力']], index=index)

# 排序
df2 = df.sort_index(axis=0, level='种族', sort_remaining=False, ignore_index=True)
df2
属性1属性2
攻速攻击力
0920
1725
2430
31018
4623
5335

由上面结果可以发现,虽然在排序时,只指定了以’种族’这个层级为准进行排序,但是排序后,0轴上所有的行索引都消失了,被转换成从0开始的自然索引。


例9:排序前调用函数,处理相关内容

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3, 4]}, index=['A', 'b', 'C', 'd'])

# 排序前,小写字母变成大写
df.sort_index(key=lambda x: x.str.lower())
df
a
A1
b2
C3
d4

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,我现在需要解决用户关于pandassort_index(level=1)在groupby和rolling操作后的使用问题。用户给出的代码是: final_df.sort_values(by=['di','date', 'hour'],ascending =[True, False, False]).groupby(['di'])['doorsensor'].rolling(defrost_hours).sum().sort_index(level=1).to_numpy() 用户特别想了解sort_index(level=1)在这里的作用和用法。我需要结合用户提供的引用资料,特别是引用[1]和[2]中提到的groupby后的层级索引处理,来详细解释。首先,我得回忆pandas中groupby后的索引结构。当使用groupby('di')进行分组后,生成的DataFrame或Series通常会有一个多级索引,第一层是分组键'di',第二层是原始数据的索引。例如,如果原始数据按'di'分组,每个组内的数据保留原来的索引,那么groupby后的对象会有两级索引。接下来是rolling操作。rolling窗口函数在分组后应用,应该是在每个'di'组内进行滚动计算。此时,结果应该保持分组后的索引结构,即仍然是两级索引:第一层是'di',第二层是原始索引。然后,用户调用了.sort_index(level=1)。这里level=1表示按照第二级索引排序。在groupby和rolling之后,第二级索引可能对应原始数据的索引,或者是排序后的顺序。用户可能在这里希望按第二级索引重新排列数据,以便后续处理或转换为numpy数组时顺序正确。需要确认的是,sort_index(level=1)是否会影响数据的对齐。例如,在排序后,不同分组的第二层索引是否会被混合排列,但根据pandas的文档,sort_index在指定level参数时,只会对该级别的索引进行排序,而不会影响其他级别。因此,每个'di'组内的数据会根据第二级索引排序,但组之间仍然保持原来的顺序。另外,用户代码中的sort_values在groupby之前已经对数据进行了排序,按'di'升序,'date'和'hour'降序排列。这可能影响groupby后的分组顺序以及rolling窗口的计算方向。但groupby后的索引结构是否保留原始排序后的索引呢?可能需要测试,但根据经验,groupby会按照分组键的顺序排列,而每个组内的数据保持原来的顺序,即sort_values后的顺序。当执行rolling之后,索引应该仍然是分组的层级索引。然后,sort_index(level=1)会对每个组内的第二级索引进行排序。例如,如果原始索引在groupby后是乱序的,这一步可以调整顺序。但用户之前已经用sort_values排序过,所以可能这里的level=1索引已经是按date和hour降序排列的,此时sort_index(level=1)是否有必要?或者用户可能在处理后的索引顺序需要调整?可能用户在使用groupby和rolling后,索引的第二层(原始索引)可能被打乱,因此需要重新排序。例如,在rolling操作后,结果的索引可能保持原来的顺序,但用户希望按第二层索引(比如时间)降序排列,这时候sort_index(level=1,ascending=False)可能会有用。但用户代码sort_index没有指定ascending参数,可能默认是升序。但用户之前的sort_values是按date和hour降序排列的,因此可能需要保持这个顺序。这里可能存在矛盾,需要进一步分析。用户之前的sort_values是按'di','date', 'hour'排序,其中date和hour是降序。groupby后的索引应该保留这个顺序。然后,在groupby后的rolling操作,结果应该保持每个组内的顺序。此时,sort_index(level=1)的作用可能是在每个'di'组内,按第二级索引(可能是原始索引或时间相关的索引)进行排序。如果用户希望确保在转换为numpy数组时,数据按某个顺序排列,可能需要调整索引的顺序。 另外,用户提到在代码中最后使用了sort_index(level=1),然后转换为numpy数组。这一步可能影响数组元素的顺序,因此需要明确sort_index(level=1)在这里的具体影响。例如,如果原始索引在分组后是时间降序排列的,但sort_index(level=1)按升序排列,那么结果数组的顺序会被反转。结合用户提供的引用,引用[1]中提到了groupby后的层级索引处理,可能需要使用sort_index来调整索引顺序。引用[2]中关于groupby的参数说明,sort参数控制分组后的索引是否排序,可能影响后续操作。用户可能在使用groupby后,索引层级结构需要调整,导致需要sort_index来处理。总结来说,sort_index(level=1)在这里的作用是对每个'di'分组内的第二级索引进行排序,调整数据的顺序,以便后续处理或输出时顺序正确。具体到用户的代码,可能是在分组和滚动求和后,需要按第二层索引(可能是时间)重新排序,确保转换为numpy数组时的顺序符合预期。需要进一步解释多级索引的结构,以及sort_index(level=1)如何影响这个结构。例如,假设groupby后的索引是(di,原始索引),那么sort_index(level=1)会按原始索引排序每个di组内的数据。如果原始索引sort_values之后已经被排序,那么这里可能不需要,或者用户可能有其他需求。 可能的错误情况是,如果用户没有正确理解索引的层级,导致排序错误。例如,如果第二级索引是时间戳,但按默认升序排序,而用户希望降序,那么可能需要指定ascending=False。但用户代码中没有指定,所以可能默认是升序,这可能与之前的sort_values中的降序排序冲突,导致顺序不一致。 因此,在回答中需要详细说明索引结构,sort_index的作用,并提醒用户注意排序顺序是否与之前操作一致,避免顺序混乱。</think>### 关于`.sort_index(level=1)`在`groupby`和`rolling`操作后的作用详解 在您的代码片段中: ```python final_df.sort_values(by=['di', 'date', 'hour'], ascending=[True, False, False]) .groupby(['di'])['doorsensor'] .rolling(defrost_hours) .sum() .sort_index(level=1) # 关键操作 .to_numpy() ``` `.sort_index(level=1)`的作用与多级索引(MultiIndex)的结构密切相关。以下是分步解析: --- #### 1. **多级索引的形成** - **`groupby`操作**:按`di`分组后,生成的`GroupBy`对象会保留原始数据的索引结构。若原始数据索引未显式设置,则默认保留整数位置索引。 - **`rolling`操作**:滚动计算后,返回的`Series`会继承分组索引`di`作为**第一级索引**,原始数据索引作为**第二级索引**,形成**双层索引结构**: $$(\text{di}, \text{原始索引})$$ --- #### 2. **`.sort_index(level=1)`的功能** - **作用对象**:仅对第二级索引(`level=1`)进行排序,不影响第一级索引`di`的分组顺序。 - **排序逻辑**:在每个`di`分组内部,按第二级索引(原始索引)的升序重新排列数据[^2]。 - **与`sort_values`的关系**:虽然前置的`sort_values`已按`date`和`hour`降序排序,但`groupby`和`rolling`操作可能改变索引顺序,因此需要再次通过`.sort_index(level=1)`确保索引对齐。 --- #### 3. **实际应用场景** 假设原始数据索引为时间戳,且`sort_values`已按时间降序排列。经过`groupby`和`rolling`后,若索引顺序被打乱,则: ```python # 示例输出(未排序) (di_A, 2) 150 (di_A, 1) 200 (di_B, 4) 90 # 执行.sort_index(level=1)后 (di_A, 1) 200 (di_A, 2) 150 (di_B, 4) 90 ``` 此时,**每个`di`组内按第二级索引升序排列**,与原始`sort_values`的降序可能冲突,需注意方向一致性。 --- #### 4. **参数扩展与注意事项** - **控制排序方向**:添加`ascending=False`可实现降序排列: ```python .sort_index(level=1, ascending=False) ``` - **索引对齐**:若需将滚动计算结果合并回原始DataFrame,需确保索引顺序一致[^3]。 - **性能优化**:对大规模数据,排序操作可能增加计算开销,建议在必要时使用。 --- ### 关键公式说明 对滚动求和结果按索引排序时,排序操作可表示为: $$ \text{SortedSeries} = \text{RollingSumSeries}.sort\_index(level=l) $$ 其中$l$为需排序索引层级(此处$l=1$)。 --- ### 相关问题 1. 如何通过`sort_index`同时排序多级索引? 2. 在`groupby`操作中如何控制输出索引排序? 3. 如何避免`rolling`操作后的索引混乱? ### 参考文献 [^1]: pandas层级索引处理实践 [^2]: `groupby`参数`sort`对索引的影响 [^3]: 滚动计算结果与原始数据的合并方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数象限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值