排序 2018/12/1 2018/12/15 
分类:按索引标签排序,按列值排序,以及两者的组合排序

1.1 序列按值,索引排序:

s=pd.Series(np.arange(4),index=list('dabc'))s.sort_values()              # 按值排序
s.sort_index(ascending=True) # 按行或列索引排序 

1.2序列多索引排序:

arrays = [np.array(['d4', 'd4', 'b2', 'b2','c3', 'c3', 'a1', 'a1']),
np.array(['ss2', 'ss1', 'ss2', 'ss1','ss2', 'ss1', 'ss2', 'ss1'])]
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index=arrays)s.sort_index(level=1)                      #指定要排序的索引级别
s.sort_index(level=1, sort_remaining=False)#按级别排序时,不按剩余级别排序# s            # 输出:        # 输出:
# d4 ss2 1     # a1 ss1 8     # d4 ss1 2
#    ss1 2     # b2 ss1 4     # b2 ss1 4
# b2 ss2 3     # c3 ss1 6     # c3 ss1 6
#    ss1 4     # d4 ss1 2     # a1 ss1 8
# c3 ss2 5     # a1 ss2 7     # d4 ss2 1
#    ss1 6     # b2 ss2 3     # b2 ss2 3
# a1 ss2 7     # c3 ss2 5     # c3 ss2 5
#    ss1 8     # d4 ss2 1     # a1 ss2 7
# dtype: int64 # dtype: int64 # dtype: int64  

2.1数据帧按值排序:

df1 = pd.DataFrame({'A1':[2,1,1,1],'A2':[1,3,2,4],'A3':[5,4,3,2]})
df1[['A1', 'A2', 'A3']].sort_values(by=['A1','A2']) #值按列排序
df1.sort_values(by=3,axis=1)                        #值按行排序df = pd.DataFrame({'A1' : ['a', 'a', 'b', np.nan, 'd', 'c'],#不能够按行值排序'A2' : [2, 1, 9, 8, 7, 4],'A3': [0, 1, 9, 4, 2, 3]})df.sort_values(by=['A1', 'A2'])          #按A1A2列值排序
df.sort_values(by='A1', ascending=False) #按A1列值排序降序# df          #输出         #输出
#   A1  A2 A3 #   A1  A2 A3 #   A1  A2 A3
# 0 a   2  0  # 1 a   1  1  # 4 D   7  2
# 1 a   1  1  # 0 a   2  0  # 5 C   4  3
# 2 b   9  9  # 2 b   9  9  # 2 B   9  9
# 3 NaN 8  4  # 5 c   4  3  # 0 A   2  0
# 4 d   7  2  # 4 d   7  2  # 1 A   1  1
# 5 c   4  3  # 3 NaN 8  4  # 3 NaN 8  4   

2.2数据帧按索引排序:

df=pd.DataFrame(np.arange(8).reshape(2,4),index=['a','b'],columns=list('DABC'))df.sort_index(axis=0,ascending=True)# 按行标签排序
df.sort_index(axis=1,ascending=True)# 按列标签排序
df.reindex(index=['a', 'b', 'c'], columns=['A', 'B', 'E'])  

2.3按索引和值排序:

# 作为by参数可以引用列或索引级别名称。
idx = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('a', 2), ('b', 2), ('b', 1), ('b', 1)])
idx.names = ['first', 'second']
df = pd.DataFrame({'A': np.arange(6, 0, -1)},index=idx)df.sort_values(by=['second', 'A'])#按'second'(索引)和'A'(列)排序# df           #df.sort_values#              A  #              A
# first second    # first second
# a     1      6  # b     1      1
#       2      5  #       1      2
#       2      4  # a     1      6
# b     2      3  # b     2      3
#       1      2  # a     2      4
#       1      1  #       2      5  
3.searchsorted()# 1D 查找应该插入元素以维持顺序的索引
s.searchsorted(value, side='left', sorter=None)#查找应该插入元素以维持顺序的索引
s = pd.Series([10,12,13,15])s.searchsorted([10, 13]) # array([0, 2]) <=10都为0
s.searchsorted([10, 14]) # array([0, 3]) >13 and <=15都为3s.searchsorted([11, 13], side='right') # array([1, 3])
s.searchsorted([11, 13], side='left')  # array([1, 2], dtype=int64)s = pd.Series([3, 1, 2])
s.searchsorted([0, 3], sorter=np.argsort(s)) # array([0, 2])  
4.最小/最大值索引nsmallest()和nlargest() # 快于head(n)
实例1:-Series s = pd.Series([4,2,3,5,6,0,1])
s.sort_values()# 0...6
s.nsmallest(3) # 0 1 2
s.nlargest(3) # 6 5 4  
实例2:-DataFrame df = pd.DataFrame({'a': [-2, -1, 1, 10, 8, 11, -1], 'b': list('abdceff'),
'c': [1.0, 2.0, 4.0, 3.2, np.nan, 3.0, 4.0]})df.nlargest(3, 'a') , df.nlargest(3, ['a', 'c'])
df.nsmallest(3, 'a'),df.nsmallest(3, ['a', 'c'])# a b c # a b c
# 0 -2 a 1.0 # 0 -2 a 1.0
# 1 -1 b 2.0 # 1 -1 b 2.0
# 6 -1 f 4.0 # 6 -1 f 4.0  

5.rank()返回从小到大排序的下标

s = pd.Series([7,-5,7,4,2,0,4])
s.rank(method='first')#根据值在原数据中出现的顺序排名df=pd.Datadf({'b':[5,7,-3,2],'a':[0,1,0,1],'c':[-2,5,8,-3]})
df.rank(axis=0) #指定要进行排序的轴  

备注:

obj.sort_values(axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')#按值排序
obj.sort_index(axis=0, level=None, ascending=True, inplace=False,kind='quicksort', na_position='last', sort_remaining=True) #按索引标签排序
# 参数:
# axis=0     #轴直接排序。对于系列来说,这只能是0。
# level:int #对指定索引级别的值进行排序。
# ascending=true #默认按升序排序。
# inplace=False  #为True则就地执行操作。
# kind:       {'quicksort','mergesort','heapsort'}选择排序算法
# na_position:{'first','last'} #将NaN放在开头或最后。
# sort_remaining=True            #按级别排序,是否按剩余级别排序  

pandas 4 - 排序( tcy)相关推荐

  1. python pandas DataFrame 排序

    python pandas DataFrame 排序 import pandas as pd import numpy as np df1 = pd.DataFrame({'日期': ['2021-7 ...

  2. 【Python】Pandas数据排序实现

    公众号:尤而小屋 作者:Peter 编辑:Peter 在以前的一篇文章   图解Pandas的排序机制sort_values   详细介绍了如何使用pandas的内置函数sort_values来实现数 ...

  3. Pandas数据排序,人人都能学会的几种方法

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 Pandas 可以说是 在Python数据科学领域应用最为广泛的工具之一. Pandas是一种高效的数据处理库,它以 datafr ...

  4. Pandas知识点-排序操作

    Pandas知识点-排序操作 数据处理过程中,经常需要对数据进行排序,使数据按指定的顺序排列(升序或降序). 在Pandas中,排序功能已经实现好了,我们只需要调用对应的方法即可. 本文使用的数据来源 ...

  5. 【Python】一文搞懂Pandas数据排序

    数据排序,是使用非常高频的功能,Pandas排序支持做的非常好,主要涉及两个函数,两种数据类型,组合起来四种情况. Series排序 Series.sort_index 索引排序 Series.sor ...

  6. Pandas数据排序——【按索引排序sort_index()方法、按值排序sort_value()方法】

    文章目录 按索引排序--sort_index() 对Series排序 对DataFrame排序 按值排序--sort_value() 对Series进行排序 对DataFrame进行排序 按索引排序- ...

  7. python pandas excel 排序_Pandas 按组汇总和列排序 - python

    给定以下数据框 In [31]: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 2, ...

  8. python dataframe排序_python – Pandas DataFrame排序忽略了这种情况

    我在 Python中有一个Pandas数据帧.数据帧的内容来自 here.我稍微修改了"单个"列中第一个字母的大小写.这是我有的: import pandas as pd df = ...

  9. python pandas excel 排序_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

最新文章

  1. linux shell case语句
  2. 【收藏】Linux系统常用命令速查手册(附PDF下载链接)
  3. python函数里面引用外部变量_Python基础 变量进阶
  4. jzoj3919-志愿者【换根法,线段树,树形dp】
  5. oc引导win方法_[OC更新]机械革命X1/X6TIS标压测试版更新
  6. 知识图谱入门2-2:用户输入->知识库的查询语句
  7. pandas保存为excel,同时设置保存的excel的样式
  8. 【转】Linux内核报文收发
  9. SAP License:SAP打油诗
  10. md 阅读器_职场办公神器:文石BOOX Nova Pro 电子书阅读器测评
  11. python虚拟环境 windows环境搭建_windows下安装Python虚拟环境virtualenvwrapper-win
  12. 转:mysql show processlist命令 详解
  13. Facebook对MySQL全表扫描性能的改进
  14. heidisql与 MySQL区别,heidisql怎么使用 MySQL可视化工具heidisql安装使用教程
  15. db4o数据库文件_繁忙的Java开发人员指南db4o,使用db4o进行数据库重构
  16. 用BeautifulSoup爬取豆瓣妹子的图片
  17. 电机学他励直流发电机matlab,直流发电机综合实验指导书(全文5篇)
  18. SharedPreferences in credential encrypted storage are not available until after user is unlocked
  19. J2ME 发送彩信问题,请个位高手帮忙,长时间在线等待
  20. 游戏陪玩app开发,高并发系统如何设计?

热门文章

  1. ucore lab1
  2. 老姜 大数据金融项目
  3. Javascript偏函数与柯里化
  4. 到微软工作还有意思么?
  5. nginx以及openresty
  6. 【长句分析】2019.7.31
  7. 用css3实现摩天轮旋转的动画效果
  8. 了解marquee标签
  9. 小米手机上锁程序_【搞事】雷军公布最喜欢的三款小米手机,你猜中了吗?| 程序员手抖:小米8重新上架,2599元...
  10. English trip V1 - B 2. May I Help You? 它是多少钱? Teacher:Lamb Key: