当前位置: 代码网 > it编程>前端脚本>Python > Python利用pandas对数据进行特定排序

Python利用pandas对数据进行特定排序

2024年05月18日 Python 我要评论
背景小编最近在处理hive表存储大小时,需要对每个表的大小进行排序,因通过hadoop fs -du -s -h /path/table命令获取的数据表大小,其结果是展示为人能直观理解的大小,例如 1

背景

小编最近在处理hive表存储大小时,需要对每个表的大小进行排序,因通过 hadoop fs -du -s -h /path/table 命令获取的数据表大小,其结果是展示为人能直观理解的大小,例如 1.1t、1.9g、49.6m 等,如果想对这些表根据存储大小进行降序排列,利用pandas应该如何做呢?

表大小

小编环境

import sys
print('python 版本:',sys.version.split('|')[0])   
#python 版本: 3.11.5
import pandas as pd
print(pd.__version__)
#2.1.0

测试数据

这里仅列举10行数据,进行演示,小编真实的hive表有几万个

测试数据

函数概述

在pandas对数据进行排序主要使用 pandas.dataframe.sort_values 方法

dataframe.sort_values(by, *, 
                axis=0,   
                ascending=true, 
                inplace=false, 
                kind='quicksort', 
                na_position='last', 
                ignore_index=false, 
                key=none)

参数解释:

  • by :str or list of str用于排序的单个字段 或 多个字段组成的列表
  • axis:“{0 or ‘index’, 1 or ‘columns’}”, default 0排序时的轴向,0 表示行向排序(一行一行排序),1表示列向排序(一列一列排序),默认是 0,也就是excel中经常使用的排序
  • ascending:bool or list of bool, default true升序、降序,默认是升序,也就是true,如果是false,则是降序
  • 注意:该参数需要和 上面的by参数要相对应
  • inplace:bool, default false是否原地更新排序的数据,默认是false,表示调用该方法后,会返回一个新的数据框
  • kind:{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, default ‘quicksort’进行排序时,指定的排序算法,默认是 quicksort,快速排序算法
  • na_position:{‘first’, ‘last’}, default ‘last’在排序的数据中,指定 nan 的排序位置,默认是排在最后
  • ignore_index:bool, default false是否要忽略数据的索引,默认是 fasle,不忽略,使用数据原本的索引
  • key:callable, optional排序之前使用的函数,该函数需要是矢量化的,也就是传入参数是 series ,返回的结果也需要为 series ,该函数会逐个用在被排序的字段上

key参数

官方文档:
https://pandas.pydata.org/docs/reference/api/pandas.dataframe.sort_values.html

完整案例

import pandas as pd
data=pd.read_excel('排序数据.xlsx',sheet_name='排序')
key_type={'t':1,'g':2,'m':3,'k':4}
data.sort_values(by=['大小2','大小1'],
                 ascending=[true,false],
                 key=lambda col: col.map(key_type) if col.name=='大小2' else col
                )

排序结果

到此这篇关于python利用pandas对数据进行特定排序的文章就介绍到这了,更多相关pandas 特定排序内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com