返回顶部
首页 > 资讯 > 后端开发 > Python >pandas中按行或列的值对数据排序的实现
  • 739
分享到

pandas中按行或列的值对数据排序的实现

pandas按行值对数据排序pandas列值对数据排序 2023-02-27 11:02:07 739人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、 按列的值对数据排序1.按某一列的值对数据排序2. 按多列的值对数据排序3. key 参数:设置排序时的数据变换函数4. 修改原数据二、 按行的值对数据排序参考在处理表格型数

在处理表格型数据时,常会用到排序,比如,按某一行或列的值对表格排序,要怎么做呢?

这就要用到 pandas 中的 sort_values() 函数。

一、 按列的值对数据排序

先来看最常见的情况。

1.按某一列的值对数据排序

以下面的数据为例。

import pandas as pd
df_col = pd.DataFrame({'Name':['Paul','Richard', 'Betty',  'Philip','Anna'],
        'course1':[85,83,90,84,85],
        'course2':[90,82,79,71,86],
        'sport':['basketball', 'Volleyball', 'football', 'Basketball','baseball']},
         index=[1,2,3,4,5])  
df_col
Namecourse1course2sport
1Paul8590basketball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball
5Anna8586baseball

在 sort_values() 函数中设置 by='列名',即可以按这一列值的顺序重新排列行。

df_sort=df_col.sort_values(by='course2')
df_sort
Namecourse1course2sport
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball

如以上结果所示,默认是升序排列。还可以做降序排列,在 sort_values() 函数中设置 ascending=False 即可。例如:

df_sort=df_col.sort_values(by='course2',ascending=False)
df_sort
Namecourse1course2sport
1Paul8590basketball
5Anna8586baseball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball

2. 按多列的值对数据排序

您是否遇到过这种情况:要排序的某一列数据有相同的值,此时结果会怎么样呢?我们来看下面的例子。

df_sort=df_col.sort_values(by='course1')
df_sort
Namecourse1course2sport
2Richard8382Volleyball
4Philip8471Basketball
1Paul8590basketball
5Anna8586baseball
3Betty9079football

从结果看到,“course1” 有两个相同的值 85,此时会依据 index 的先后顺序排列。

那如果不想按 index 顺序,想要自己设定相同值的排序方式,应该怎么做呢?

可以设置第二列,对于第一列的相同值,参照第二列的值排序。例如:

df_sort=df_col.sort_values(by=['course1','course2'])
df_sort
Namecourse1course2sport
2Richard8382Volleyball
4Philip8471Basketball
5Anna8586baseball
1Paul8590basketball
3Betty9079football

可以看到,by 参数中的第二列 “course2” 只在第一列 “course1” 中有相同值时起作用,因此只有 “Anna” 和 “Paul” 所在的这两行数据位置互换,其它行位置不变。

3. key 参数:设置排序时的数据变换函数

在实际中还可能会遇到这种情况,数据中大小写都有,比如例子数据的 “sport” 列。按这一列对数据排序,结果如下:

df_sort=df_col.sort_values(by=['sport'])
df_sort
Namecourse1course2sport
4Philip8471Basketball
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball
3Betty9079football

看结果发现,大写字母排在小写字母前面,因此 “Volleyball” 所在行排在 “baseball” 所在行前面,但这并不是我们想要的排序结果。那应该怎么做,才能按字母顺序排序呢?

可以设置 sort_values() 函数的 key 参数。

df_sort=df_col.sort_values(by=['sport'],key=lambda col:col.str.lower())
df_sort
Namecourse1course2sport
5Anna8586baseball
1Paul8590basketball
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball

此时的排序结果就是按字母顺序排列。

4. 修改原数据

前面介绍的操作中,每次都生成了一个新的数据 df_sort,并没有改变原数据。

df_col
Namecourse1course2sport
1Paul8590basketball
2Richard8382Volleyball
3Betty9079football
4Philip8471Basketball
5Anna8586baseball

但是,有时可能数据太大,而原数据后续不再使用。为了节省空间,想直接在原数据上改动。应该怎么办呢?

只要在 sort_values() 函数中设置 inplace=True。

df_col.sort_values(by='course2',inplace=True)
df_col
Namecourse1course2sport
4Philip8471Basketball
3Betty9079football
2Richard8382Volleyball
5Anna8586baseball
1Paul8590basketball

二、 按行的值对数据排序

需要注意的是,这种情况只适用于各列数据类型相同的情况,例如下面例子中的数据,每一列数据都是数值型。而前面例子的数据既有数值型,又有字符型,无法按行的值排序。

df_row = pd.DataFrame({
        'course1':[91,85,90,84,92],
        'course2':[72,81,76,71,79],
        'course3':[93,85,88,94,86]},
         index=['Paul','Richard', 'Betty',  'Philip','Anna'])
df_row
course1course2course3
Paul917293
Richard858185
Betty907688
Philip847194
Anna927986

按行的值排序时,设置 by 参数为某行的 index 名,并且 axis=1。

df_sort=df_row.sort_values(by='Anna',axis=1)
df_sort
course2course3course1
Paul729391
Richard818585
Betty768890
Philip719484
Anna798692

按行值排序在 sort_values() 函数中设置 ascending, key, inplace 等参数的方式都与前面介绍的按列值排序相同。这里仅以按多行的值对数据排序为例。

df_sort=df_row.sort_values(by=['Richard','Paul'],axis=1,ascending=False)
df_sort
course3course1course2
Paul939172
Richard858581
Betty889076
Philip948471
Anna869279

参考

1.https://www.geeksforgeeks.org/sort-rows-or-columns-in-pandas-dataframe-based-on-values/#courses

2.Https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html

到此这篇关于pandas中按行或列的值对数据排序的实现的文章就介绍到这了,更多相关pandas 按行或列的值对数据排序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pandas中按行或列的值对数据排序的实现

本文链接: https://lsjlt.com/news/197607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pandas中按行或列的值对数据排序的实现
    目录一、 按列的值对数据排序1.按某一列的值对数据排序2. 按多列的值对数据排序3. key 参数:设置排序时的数据变换函数4. 修改原数据二、 按行的值对数据排序参考在处理表格型数...
    99+
    2023-02-27
    pandas 按行值对数据排序 pandas 列值对数据排序
  • pandas中按行或列的值对数据排序如何实现
    本文小编为大家详细介绍“pandas中按行或列的值对数据排序如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“pandas中按行或列的值对数据排序如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在处理...
    99+
    2023-07-05
  • python如何实现按照键或者数值对字典进行排序
    这篇文章主要介绍python如何实现按照键或者数值对字典进行排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何实现按照键或者数值对字典进行排序# 按照键或者数值对字典进行排序dict3 =&n...
    99+
    2023-06-27
  • pandas数值排序的实现实例
    目录1.按照一列数值进行排序 1.1按照五缺失值的一列进行排序 1.1.1升序排列 1.1.2 降序排列 1.2按照有缺失值的一列进行排序 1.2.1 缺失值显示在最后 1.2.2 ...
    99+
    2024-04-02
  • PHP中的asort()函数对数组按值进行排序
    PHP中的asort()函数对数组按值进行排序,需要具体代码示例PHP是一种广泛使用的服务器端脚本语言,它具有丰富的数组处理函数。其中,asort()函数是一个非常有用的函数,它可以按照数组的值进行排序。本文将详细介绍asort()函数的使...
    99+
    2023-11-18
    PHP 数组排序 asort()
  • pandas按某列降序的实现
    升序 import pandas as pd import numpy as np data = np.random.randint(low=2,high=10,size=(5,3...
    99+
    2023-01-16
    pandas 列降序 pandas 降序
  • pandas删除某行或某列数据的实现示例
    目录1、drop()函数2、del函数首先,创建一个DataFrame格式数据作为举例数据。 # 创建一个DataFrame格式数据 data = {'a': ['a0', 'a1'...
    99+
    2024-04-02
  • 使用PHP中的arsort()函数对数组按值进行逆序排序
    标题:PHP中使用arsort()函数对数组按值进行逆序排序文章正文:在PHP中,数组是非常常用的数据结构。有时候我们需要对数组进行排序,特别是按值进行排序。PHP提供了一系列的排序函数来满足我们的需求,其中之一就是arsort()函数。a...
    99+
    2023-11-18
    PHP arsort() 逆序排序
  • PHP数组值按大小排序的实现方法
    PHP数组值按大小排序的实现方法 在PHP中,对数组进行排序是非常常见的操作。如果想要对数组的值按照大小进行排序,可以使用PHP内置的函数来实现。下面将展示两种常用的方法来实现数组值按...
    99+
    2024-04-02
  • 怎么在mongodb中对数据按时间进行排序
    在mongodb中给数据按时间进行排序的方法:1.启动mongodb服务;2.登录mongodb数据库;3.使用数据库;4.使用sort()方法进行排序;具体步骤如下:首先,在命令行中启动mongodb服务;net start MongoD...
    99+
    2024-04-02
  • PHP中的ksort()函数按键名对数组进行排序
    PHP是一种服务器脚本语言,常用于Web开发中处理数据和生成动态网页。其中,ksort()函数是一个非常有用的数组排序函数。本文将介绍ksort()函数的用法,并提供具体的代码示例。一、ksort()函数的作用ksort()函数用于按照键名...
    99+
    2023-11-18
    PHP ksort 键名排序
  • SQL对数据进行按月统计或对数据进行按星期统计的实例代码
     对于所有的需求,当你不知道怎么处理的时候,你就先用最简单的方法,或者说的明白一点,用最原始的方法,先实现业务需求再说。   一、对提现队列数据表“ims_checkout_task”进行汇总统计,按月汇总...
    99+
    2024-04-02
  • java中实现对类的对象进行排序
    我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable接...
    99+
    2022-03-08
    java教程 java 实现 对象 排序
  • Python教程按照字典的键或值进行排序方法解析
    Python sorted() 函数 sorted() 函数对所有可迭代的对象进行排序操作 sorted 语法: sorted(iterable, key=None, revers...
    99+
    2024-04-02
  • Pandas筛选DataFrame含有空值的数据行的实现
    目录数据准备1.筛选指定单列中有空值的数据行2.筛选指定多列中/全部列中满足所有列有空值的数据行 3.筛选指定多列中/全部列中满足任意一列有空值的数据行 数据准备...
    99+
    2024-04-02
  • 使用C中的列对ListView进行排序
    在C中使用List View进行排序的方法如下:1. 首先,定义一个callback函数来进行比较排序。该函数可以根据需要自定义比较...
    99+
    2023-09-07
    C
  • PHP如何对数组中的值进行大小排序
    PHP是一种常用的服务器端脚本语言,广泛应用于网站开发和数据处理领域。在PHP中,对数组中的值进行大小排序是很常见的需求。通过使用内置的排序函数,可以很方便地实现对数组的排序操作。下面...
    99+
    2024-04-02
  • python中pandas对多列进行分组统计的实现
    使用groupby([ ]).size()统计的结果,值相同的字段值会不显示 如上图所示,第一个空着的行是982499 7 3388 1,因为此行与前面一行的这两个字段值是一样...
    99+
    2024-04-02
  • 在 PHP 中,如何根据数组值的比较对数组进行排序?
    php 中对数组进行排序的方法有:使用 sort() 函数升序排列。使用 rsort() 函数降序排列。使用 asort() 函数为关联数组升序排列值。使用 arsort() 函数为关联...
    99+
    2024-05-03
    php 数组排序 排列
  • pandas如何统计某一列或某一行的缺失值数目
    目录统计某一列或某一行的缺失值数目1.使用isnull()2.使用count利用pandas处理缺失值处理缺失值统计某一列或某一行的缺失值数目 1.使用isnull() import...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作