|
1. sort_values
pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。
官方文档- ## 参数
- DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
- #### 参数说明
- axis:{0 or ‘index', 1 or ‘columns'}, default 0,默认按照索引排序,即纵向排序,如果为1,则是横向排序
- by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名";
- ascending:布尔型,True则升序,可以是[True,False],即第一字段升序,第二个降序
- inplace:布尔型,是否用排序后的数据框替换现有的数据框
- kind:排序方法,{‘quicksort', ‘mergesort', ‘heapsort'}, default ‘quicksort'。似乎不用太关心
- na_position : {‘first', ‘last'}, default ‘last',默认缺失值排在最后面
复制代码 2. 排序sort_values
构建DataFrame- import pandas as pd
- df = pd.DataFrame([['a', 100, 'c'], ['a', 300, 'a'], ['a', 200, 'b'],
- ['c', 300, 'a'], ['c', 200, 'b'], ['c', 100, 'c'],
- ['b', 200, 'b'], ['b', 300, 'a'], ['b', 100, 'c']], columns=['X', 'Y', 'Z'])
复制代码- X Y Z0 a 100 c1 a 300 a2 a 200 b3 c 300 a4 c 200 b5 c 100 c6 b 200 b7 b 300 a8 b 100 c
复制代码 按照Y, X两列对df进行降序排列- df.sort_values(by=['Y', 'X'], ascending=False, inplace=True)
- print(df)
复制代码- X Y Z3 c 300 a7 b 300 a1 a 300 a4 c 200 b6 b 200 b2 a 200 b5 c 100 c8 b 100 c0 a 100 c
复制代码 3. 分组排序groupby|sort_values
按照X列进行分组后对Y列进行升序排序- res = df.groupby('X', sort=False).apply(lambda x: x.sort_values('Y', ascending=True)).reset_index(drop=True)
- print(res)
复制代码- X Y Z0 a 100 c1 a 200 b2 a 300 a3 c 100 c4 c 200 b5 c 300 a6 b 100 c7 b 200 b8 b 300 a
复制代码 示例:
创建数据框- #利用字典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
复制代码 到此这篇关于pandas中DataFrame排序及分组排序的文章就介绍到这了,更多相关pandas 排序及分组排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/python/319239dbt.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|