卑微的小渣渣 发表于 2024-4-13 12:51:41

pandas中DataFrame排序及分组排序的实现示例

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则升序,可以是,即第一字段升序,第二个降序
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':,
               'col3':
})
print(df)

>>>
col1col2col3
0    A   2   0
1    A   1   1
2    B   9   9
3NaN   8   4
4    D   7   2
5    C   7   8依据第一列排序,并将该列空值放在首位
#依据第一列排序,并将该列空值放在首位
print(df.sort_values(by=['col1'],na_position='first'))
>>>
col1col2col3
3NaN   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))
>>>
col1col2col3
2    B   9   9
3NaN   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)
>>>
col1col2col3
3NaN   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':,'x2':,'x3':})
print(x)
#按照索引值为0的行,即第一行的值来降序排序
print(x.sort_values(by =0,ascending=False,axis=1))
>>>
   x1x2x3
0   1   4   3
1   2   3   2
2   2   2   4
3   3   1   1
   x2x3x1
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】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: pandas中DataFrame排序及分组排序的实现示例