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

 更新时间:2024年04月03日 11:55:29   作者:craftsman2020  
本文主要介绍了pandas中DataFrame排序及分组排序,pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,下面就来具体介绍一下,感兴趣的可以了解一下

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  Z
0  a  100  c
1  a  300  a
2  a  200  b
3  c  300  a
4  c  200  b
5  c  100  c
6  b  200  b
7  b  300  a
8  b  100  c

按照Y, X两列对df进行降序排列

df.sort_values(by=['Y', 'X'], ascending=False, inplace=True)
print(df)

   X    Y  Z
3  c  300  a
7  b  300  a
1  a  300  a
4  c  200  b
6  b  200  b
2  a  200  b
5  c  100  c
8  b  100  c
0  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  Z
0  a  100  c
1  a  200  b
2  a  300  a
3  c  100  c
4  c  200  b
5  c  300  a
6  b  100  c
7  b  200  b
8  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 排序及分组排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Matplotlib绘制条形图的方法你知道吗

    Matplotlib绘制条形图的方法你知道吗

    这篇文章主要为大家详细介绍了Matplotlib绘制条形图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2022-03-03
  • Python上下文管理器全实例详解

    Python上下文管理器全实例详解

    在本篇文章里小编给大家整理的是关于Python上下文管理器全实例解析的知识点,需要的朋友们参考下。
    2019-11-11
  • python自动发微信监控报警

    python自动发微信监控报警

    这篇文章主要为大家详细介绍了python自动发微信监控报警,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 如何利用AJAX获取Django后端数据详解

    如何利用AJAX获取Django后端数据详解

    ajax一个前后台配合的技术,它可以让javascript发送http请求,与后台通信,获取数据和信息。下面这篇文章主要介绍了如何利用AJAX获取Django后端数据的相关资料,需要的朋友可以参考下
    2021-06-06
  • python 实现视频 图像帧提取

    python 实现视频 图像帧提取

    今天小编就为大家分享一篇python 实现视频 图像帧提取,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python 抓取动态网页内容方案详解

    Python 抓取动态网页内容方案详解

    这篇文章主要介绍了Python 抓取动态网页内容方案详解,首先通过Chrome的工具来进行分析,然后再使用python进行处理,最终得到我们需要的内容,非常的方便,这里也算是给大家提供一个思路
    2014-12-12
  • python内存管理机制原理详解

    python内存管理机制原理详解

    这篇文章主要介绍了python内存管理机制原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Django rest framework分页接口实现原理解析

    Django rest framework分页接口实现原理解析

    这篇文章主要介绍了Django rest framework分页接口实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python随机数random模块使用指南

    Python随机数random模块使用指南

    本文给大家分享的是Python随机数random模块的几个常用的方法,非常的简单,小伙伴们喜欢的话,后续继续深入探讨
    2016-09-09
  • Python+Yolov5人脸口罩识别的详细步骤

    Python+Yolov5人脸口罩识别的详细步骤

    人脸口罩佩戴检测(识别)是当前急需的应用,而YOLOv5是目前流行的强悍的目标检测技术,下面这篇文章主要给大家介绍了关于Python+Yolov5人脸口罩识别的相关资料,需要的朋友可以参考下
    2022-12-12

最新评论