Pandas:sort_index、sort_values方法的使用

sort_index和sort_values既是Series类型数据自带的方法,也是DataFrame数据自带的方法。本篇博客以DataFrame为例进行讲述。

1 概览
sort_index和sort_values可以将DataFrame中的数据按照索引及值的大小进行排序。这两个方法所包含的参数及其作用都基本一致。如下表所示:

参数    作用
by    sort_values方法独有的参数;指定排序列名或索引;
level    sort_index方法独有的参数;指定排序索引所在的层级;
axis    指定排序的轴;
ascending    升序(True)或者降序(False);
inplace    是否本地置换,参考博客:Pandas和Numpy:常见函数参数inplace的作用_Sun_Sherry的 博客-CSDN博客_inplace函数
kind    指定排序算法:'quicksort', 'mergesort', 'heapsort', 'stable';
na_position    指定空值数据放置的位置:'first'、'last';
ignore_index    是否重新生成索引;新索引为0,1,……,
key    自定义排序方法;
sort_remaining    sort_index方法独有的参数;目前作用还不太明白

为了方便说明,先创建如下DataFrame变量:

其结果如下:

1.1 sort_index用法

顾名思义,sort_index可以将DataFrame按照索引的大小顺序重新排列。其用法如下:

data_1=data.sort_index(ascending=False,ignore_index=True)

其结果如下:

先将data按其索引的逆序排序重新进行排列,逆序排列后的索引顺序为:C2->B1->A2->A1,并抛弃原有的索引(因为设置了ignore_index参数)即可得到上述结果。

1.2 sort_values用法

同样,sort_values可以将DataFrame按指定值的大小顺序重新排列,其用法如下:

data_2=data.sort_values(by='col_2',ascending=False,na_position='first',axis=0)
#按对应值与7运算余数大小来排列
data_3=data.sort_values(by='col_2',,ascending=False,key=lambda x:x%7)  

其结果如下:

这里有以下几点需要说明:

data_2中的na_position指定的是排序列(本例中为col_2)中的空值对应的数据的存放位置,对其他列中的空值不施加任何影响;
data_3的排序结果说明:col_2列中的每个值进行key中指定的操作得到:key(97)=6, key(33)=5, key(3)=3, key(23)=2。然后按照这个大小顺序进行排列。
要注意自定义排序方法key中匿名函数的写法。该匿名函数中x对应的是DataFrame中指定排序列中的每一个具体元素,比如97,33等;
————————————————

2 其他参数用法

第1部分介绍了sort_index和sort_values的主要参数及其常规用法。这一部分主要介绍其他参数的用法

2.1 level:使用某一层级的索引来排序

当DataFrame中的索引为复合索引(MultiIndex)时,需要按照某个指定层级的索引对DataFrame进行排序时,可以通过设置level来实现。先使用如下代码修改data的索引:

data.index=pd.MultiIndex.from_product([['A1','A2'],['B1','B2']],names=['idx_1','idx_2'])

修改后的data结果如下:

当需要使用idx_2对应的索引对DataFrame进行排序时,可以使用参数level。具体如下:

data_4=data.sort_index(level=1) #也可以写作level='idx_2'

data_4结果如下:

2.2 axis轴

为了方便后续说明,先构建如下数据:

import pandas as pd
import numpy as np
data=pd.DataFrame(np.random.randint(10,100,size=(6,6)),
                  columns=pd.MultiIndex.from_product([['col_1','col_2'],['C1','C2','C3']],
                                                    names=['L_CF','L_CS']),
                  index=pd.MultiIndex.from_product([['idx_1','idx_2'],['R1','R2','R3']],
                                                  names=['L_IF','L_IS']))

data结果如下:

2.2.1 set_index中的axis

当set_index中的参数axis=1时,可以将DataFrame中的列按照其列名的大小顺序重新进行排列。具体如下:

data_5=data.sort_index(axis=1,ascending=False,level=1)

其结果如下(图中红框中的即为进行排序操作的值,level=1):

2.2.2 set_values中的axis

set_values方法中的axis情况需要分别讨论。具体如下:

  • axis=0中可以将DataFrame按索引的大小顺序重新对数据进行排列。

data_6=data.sort_values(axis=0,by='L_IS',ascending=False)

其结果如下:

  • 当axis=1时可以将DataFrame按指定某一行的元素大小进行重排。

data_7=data.sort_values(axis=1,by=[('idx_2','R3')])

其结果如下(此时by中要写入排序行的索引):

2.2.3 总结
关于set_index和sort_values中的axis轴参数引发的一些思考,总结如下:

关于index:以前关于DataFrame中的index只是片面地认为就是行索引,但是DataFrame的列名也可以被称为索引。比如data的定义中其二级列明的定义使用的仍然时pd.MultiIndex方法。同样,对于value也是类似。 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重读Java设计模式: 桥接模式详解

引言 在软件开发中,经常会遇到需要在抽象与实现之间建立连接的情况。当系统需要支持多个维度的变化时,使用传统的继承方式往往会导致类爆炸和耦合度增加的问题。为了解决这一问题,我们可以使用桥接模式。桥接模式是一种结构型设计模式&#…

【windows】--- nginx 超详细安装并配置教程

目录 一、下载 nginx二、安装三、查看是否安装成功四、配置五、关闭 nginx六 负载均衡七 配置静态资源1. 根目录下的子目录(root)2.完全匹配(alias) 刷新配置(不必重启nginx)八、后端鉴权 一、下载 nginx 打开 nginx 的官网:nginx.org/ &…

2024.4.3-[作业记录]-day08-CSS 盒子模型(溢出显示、伪元素)

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 作业 2024.4.3-学习笔记css溢出显示单行文本溢出显示省略号多行文本溢出显示省…

Linux基础篇:Linux网络yum源——以配置阿里云yum源为例

Linux网络yum源——以阿里云为例 一、网络yum源介绍 Linux中的YUM(Yellowdog Updater, Modified)源是一个软件包管理器,它可以自动处理依赖关系并安装、更新、卸载软件包。YUM源是一个包含软件包的远程仓库,它可以让用户轻松地安…

苹果cmsV10 MXProV4.5自适应PC手机影视站主题模板苹果cms模板mxone pro

演示站:http://a.88531.cn:8016 MXPro 模板主题(又名:mxonepro)是一款基于苹果 cms程序的一款全新的简洁好看 UI 的影视站模板类似于西瓜视频,不过同对比 MxoneV10 魔改模板来说功能没有那么多,也没有那么大气,但是比较且可视化功…

服务器硬件构成与性能要点:CPU、内存、硬盘、RAID、网络接口卡等关键组件的基础知识总结

文章目录 服务器硬件基础知识CPU(中央处理器)内存(RAM)硬盘RAID(磁盘阵列)网络接口卡(NIC)电源散热器主板显卡光驱 服务器硬件基础知识 服务器是一种高性能计算机,用于在…

thinkphp6入门(21)-- 如何删除图片、文件

假设文件的位置在 /*** 删除文件* $file_name avatar/20240208/d71d108bc1086b498df5191f9f925db3.jpg*/ function deleteFile($file_name) {// 要删除的文件路径$file app()->getRootPath() . public/uploads/ . $file_name; $result [];if (is_file($file)) {if (unlin…

论文笔记:Large Language Models as Analogical Reasoners

iclr 2024 reviewer打分5558 1 intro 基于CoT prompt的大模型能够更好地解决复杂推理问题 然而传统CoT需要提供相关的例子作为指导,这就增加了人工标注的成本——>Zero-shot CoT避免了人工标注来引导推理 但是对于一些复杂的任务难以完成推理,例如c…

Type-c转USBA3.0芯片 USBA3.0转Type-c芯片(USB3.1GEN2 多路切换Switch芯片) VL162

VL162具有CC功能的USB Type-C数据开关USB 3.1 Gen2 (10Gbps) VL162 带CC功能的USB Type-C数据开关 支持最高10Gbps 2差分通道,2:1 MUX/DeMUX 兼容10Gbps USB3.1 Gen2 低功耗,6mW在设备模式下有效 高直流共模电压,支持2.0V 28针QFN 3.5 x 4.5m…

人工智能数据分析Python常用库 04 matplotlib库

文章目录 一、matplotlib库的作用与环境配置1、环境配置示例2、改变绘图风格3、保存图片 二、绘制二维图形1、折线图(1)示例(2)调整线条颜色:(3)调整线条风格(4)调整线宽…

【C语言】_文件内容操作:随机读写

目录 1. fseek 1.1 随机读文件 1.2 随机写文件 2. ftell 3. rewind 当以读方式打开一个存在且存有内容的文件时,文件指针会默认指向第一个元素。以在test4.txt文件中存储abcdef为例: int main() {//打开文件FILE* pf fopen("E:\\C_文件操作…

关系型数据库与非关系型数据库、Redis数据库

相比于其他的内存/缓存数据库,redis可以方便的实现持久化的功能(保存至磁盘中) 一、关系数据库与非关系型数据库 1.1 关系型数据库 一个结构化的数据库,创建在关系模型基础上一般面向于记录 SQL语句 (标准数据查询语言) 就是一种…

LNMP环境:揭秘负载均衡与高可用性设计

lb1: 192.168.8.5 lb2: 192.168.8.6 web1:192.168.8.7 web2:192.168.8.8 php-fpm: 192.168.8.9 mysql: 192.168.8.10 nfs:192.168.8.11 分别插入镜像 8.5-8.8 分别安装nginx,并设置启动 8.9 安装php 8.10 安装mysql 先配置一台web服务器然后同步 设置网站根目录 cp -…

【00】【solidity最新教程】-简介

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity 是静态类型语言,支持继承、库和复杂的用…

java -网络编程socket-聊天室-02

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 先引入线程的正统解释 线程(Thread)是程序执行流的最小单元。线程是操作系统分配CPU时间片的基…

【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

题目 假设你在Uber工作。rides表包含了关于Uber用户在美国各地的行程信息。 编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为…

vue广告悬浮框,页面来回移动,鼠标放上停止,离开移动

1.dom <div class"popup-dialog" id"popupDialog" mouseover"onMmouseover" mouseout"onMouseout"><p>vue广告悬浮</p></div>2.js mounted() {this.initPopup();},beforeDestory() {if (this.times) {clearIn…

鸡尾酒排序解读

在数据处理的海洋中&#xff0c;排序算法无疑是引领我们探索数据规律的灯塔。今天&#xff0c;我们要探讨的是一种有趣且独特的排序算法——鸡尾酒排序。鸡尾酒排序&#xff0c;也被称为定向冒泡排序、双冒泡排序或搅拌排序&#xff0c;是冒泡排序的一种变体&#xff0c;它通过…

了解强化学习算法 PPO

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 介绍&#xff1a; PPO 算法&#xff0c;即 Proximal Policy Optimization&#xff08;近端策略优化&#xff09;&#xff0c;是一种强化学习算法。它的主要目的是改进策略梯度方法&#xff0c;使得训练…

flink on yarn

前言 Apache Flink&#xff0c;作为大数据处理领域的璀璨明星&#xff0c;以其独特的流处理和批处理一体化模型&#xff0c;成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能&#xff0c;还能在有界数据批处理上达到高效稳定的效果。本文将简要…