python 排名函数_Python中的排序函数sort_values()

Python的pandas库提供了sort_values()函数,用于按照数据框的列或索引进行排序。此函数类似SQL的order by,支持升序和降序排列,并能处理缺失值的位置。文中通过实例展示了如何依据一列或多列进行排序,以及如何更改缺失值的位置和替换原始数据。

一、sort_values()函数用途

Python中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。

二、sort_values()函数的具体参数

用法:

DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)

参数说明

参数说明

by指定列名(axis=0或’index’)或索引值(axis=1或’columns’)

axis若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0

ascending是否按指定列的数组升序排列,默认为True,即升序排列

inplace是否用排序后的数据集替换原来的数据,默认为False,即不替换

na_position{‘first’,‘last’},设定缺失值的显示位置

三、sort_values用法举例

#利用字典dict创建数据框

import numpy as np

import pandas as pd

df=pd.DataFrame({'col1':['A','A','B',np.nan,'D','C'],

'col2':[2,1,9,8,7,7],

'col3':[0,1,9,4,2,8]

})

print(df)

>>>

col1 col2 col3

0 A 2 0

1 A 1 1

2 B 9 9

3 NaN 8 4

4 D 7 2

5 C 7 8

依据第一列排序,并将该列空值放在首位

#依据第一列排序,并将该列空值放在首位

print(df.sort_values(by=['col1'],na_position='first'))

>>>

col1 col2 col3

3 NaN 8 4

0 A 2 0

1 A 1 1

2 B 9 9

5 C 7 8

4 D 7 2

依据第二、三列,数值降序排序

#依据第二、三列,数值降序排序

print(df.sort_values(by=['col2','col3'],ascending=False))

>>>

col1 col2 col3

2 B 9 9

3 NaN 8 4

5 C 7 8

4 D 7 2

0 A 2 0

1 A 1 1

根据第一列中数值排序,按降序排列,并替换原数据

#根据第一列中数值排序,按降序排列,并替换原数据

df.sort_values(by=['col1'],ascending=False,inplace=True,

na_position='first')

print(df)

>>>

col1 col2 col3

3 NaN 8 4

4 D 7 2

5 C 7 8

2 B 9 9

1 A 1 1

0 A 2 0

按照索引值为0的行,即第一行的值来降序排序

x = pd.DataFrame({'x1':[1,2,2,3],'x2':[4,3,2,1],'x3':[3,2,4,1]})

print(x)

#按照索引值为0的行,即第一行的值来降序排序

print(x.sort_values(by =0,ascending=False,axis=1))

>>>

x1 x2 x3

0 1 4 3

1 2 3 2

2 2 2 4

3 3 1 1

x2 x3 x1

0 4 3 1

1 3 2 2

2 2 4 2

3 1 1 3

————————————————

版权声明:本文为优快云博主「ckSpark」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.youkuaiyun.com/MsSpark/article/details/83154128

来源:oschina

链接:https://my.oschina.net/u/3750423/blog/3207329

Python的pandas库中,`sort_values`函数用于对DataFrame中的数据按值进行排序。该函数提供了多个参数,用于灵活地控制排序的行为。以下是`sort_values`函数的主要参数说明: ### 参数说明 - **by** 用于指定排序依据的列名或列名列表。可以是一个字符串(表示单列排序)或一个字符串列表(表示多列排序)。例如,`df.sort_values(by='A')`表示按列'A'排序,而`df.sort_values(by=['A', 'B'])`表示先按列'A'排序,再按列'B'排序[^3]。 - **axis** 指定排序的轴方向。默认值为`0`,表示按行排序;若设置为`1`,则表示按列排序。由于DataFrame通常是按行操作的,因此通常使用默认值`0`。 - **ascending** 控制排序顺序。默认值为`True`,表示升序排列;若设置为`False`,则表示降序排列。对于多列排序,可以传入一个布尔值列表,分别指定每列的排序方向。例如,`ascending=[True, False]`表示第一列升序,第二列降序。 - **inplace** 是否在原数据上进行修改。默认值为`False`,表示不会修改原始DataFrame,而是返回一个新的排序后的DataFrame;若设置为`True`,则会直接在原数据上进行修改[^3]。 - **kind** 指定排序算法。默认值为`'quicksort'`,也可以选择`'mergesort'`或`'heapsort'`。不同的排序算法适用于不同的场景,例如`'mergesort'`是稳定的排序算法,适合用于需要保持相等元素相对顺序的情况。 - **na_position** 控制缺失值(NaN)在排序结果中的位置。默认值为`'last'`,表示将NaN值放在最后;若设置为`'first'`,则表示将NaN值放在最前面[^3]。 - **ignore_index** 是否重置索引。默认值为`False`,表示保留原始索引;若设置为`True`,则会生成一个新的连续索引[^3]。 - **key** 用于指定一个函数,该函数会对排序依据的值进行变换,从而影响排序结果。例如,可以使用`key=lambda x: -x`实现降序排序,或者对字符串进行大小写不敏感的排序。 ### 示例代码 ```python import pandas as pd import numpy as np # 创建一个示例DataFrame df = pd.DataFrame({ 'A': [3, 1, 2, np.nan], 'B': ['c', 'a', 'd', 'b'] }) # 按列'A'升序排序,并重置索引 sorted_df = df.sort_values(by='A', ascending=True, ignore_index=True) print(sorted_df) ``` ### 输出结果 ``` A B 0 1.0 a 1 2.0 d 2 3.0 c 3 NaN b ``` 在上述示例中,`sort_values`函数按列'A'升序排序,并通过`ignore_index=True`重置了索引,使得输出结果的索引从0开始连续。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值