在上期的推文中,我们介绍了使用openpyxl来进行公式的设置等操作,相关推文可以从本公众号的底部相关菜单获取。接下来的推文我们来学习一下openpyxl这个python模块中的其他知识,我们这次的推文来看一下怎么使用Python来进行排序。

一、Openpyxl中的排序

在openpyxl中排序并没有实际效果,也就是说使用这个排序的操作会在相应的列头上设置相关的指令。假设现在我们有一个文件,如下所示:

我们来运行以下代码,看看有什么情况:

from openpyxl import *
workbook = load_workbook('sort_file.xlsx')
worksheet = workbook['Sheet1']
worksheet.auto_filter.ref = "A1:B12"
worksheet.auto_filter.add_filter_column(0, ["Kiwi", "Apple", "Mango"])
worksheet.auto_filter.add_sort_condition("B2:B12")
workbook.save("sort_file.xlsx")

代码说明:第四行代码表示需要过滤排序的范围;第五行代码增加了过滤的列,0表示第1列,后面的列表表示需要选择的关键字;第六行代码的作用是为指定的单元格范围添加排序条件。

运行代码以后的数据截图样式显示如下:可以发现,这个表格我们已经增加了相应的筛选按钮,且点击筛选按钮,可以看出Fruit列已经勾选了“Apple,Kiwi,Mango”等关键词。另外也可以通过打开Excel文件如果下拉筛选的按钮,就可以看出其已经勾选的项目了。

到目前,我没有发现可以直接实现过滤的方法。大家如果找到什么好的方法可以在微信公众号后台给我留言哈。

既然openpyxl不能够实现我们的功能,那么我们该怎么实现这个个过滤和排序呢?请继续看一下的方法。

二、Pandas中的排序

Pandas是一个强大的第三方数据处理Python模块,能够实现很多的功能。(后期本公众号也会详细的出一点Pandas的教程),注意在pandas读取文件的时候要依赖包xlrd模块需要进行相应的安装。

那么对于上述文件,我们看该怎么进行数据的过滤和排序呢?

import pandas as pd
data_test = pd.read_excel('sort_file.xlsx')
df = pd.DataFrame(data_test)
# 以列“Fruit”的标签列来进行升序排列
df_1 = df.sort_values('Fruit',ascending=True)
print(df_1)

输出结果:

可以看出上述的数据已经被排序了。

我们来解一下Pandas的这个sort_values()函数。第一个参数为by,为排序的列名称(字段)为列表,后面的ascending可选True和False为排序的方式。True为升序False为降序。

这里补充一个知识点,在进行排序的时候,如果还存在一个字段Price,那么如果我们使用以下的代码来进行排序,有什么作用呢?

df_2 = df.sort_values(['Fruit','Price'],ascending=False)

这行代码告诉我们,这个by参数不仅仅可以传入一个字符串,还能传入一个列表的。

那么这行代码的意思就是:以Fruit进行降序排列,当Fruit中有相同的值则按Price进行降序排序。

再看一行代码:

df_3 = df.sort_values(['Fruit','Price'],ascending=[False,True])

上述代码也是比较常用的类型之一,很显然对Fruit列进行排序对Price进行升序排列。

Tips: sort_values()函数有一个参数inplace,这个inplace 控制排序后的数据集替换原来的数据,默认为False,即不替换原来的数据。在进行排序结束之后,我们的最后操作就是将数据写入到Excel中:

import pandas as pd
data_test = pd.read_excel('sort_file.xlsx')
df = pd.DataFrame(data_test)
# 以列“Fruit”的标签列来进行升序排列
df_1 = df.sort_values('Fruit',ascending=True)
writer =  pd.ExcelWriter('sort_file.xlsx')
df_1.to_excel(writer,sheet_name = 'Sheet1',index=False)
writer.save()

上述代码的作用就是将排序后的数据写入到原来的Excel文件中。

三、总结

以上就是本次的推文,推文介绍的是在Excel中进行排序的相关操作,大家跟着学习的时候最好也跟着实践一下。后期我们将继续介绍其他方面的知识。大家在学习的时候有什么疑问或者发现有什么好的方法可以在公众号的后台告诉我们哦。

最详细的Excel模块Openpyxl教程(四)-过滤和排序操作相关推荐

  1. 单元格自适应宽度_最详细的Excel模块Openpyxl教程(二)-单元格操作详解

    在以前的推文中,我们介绍了操作Excel的模块openpyxl的入门知识,相关推文可以从本公众号的底部相关菜单获取.接下来的推文我们来学习一下openpyxl这个python模块中的其他知识,本次推文 ...

  2. 最详细的Excel模块Openpyxl教程——基础操作

    在以前的推文中,我们介绍了操作Excel的模块Xlwings的知识,相关推文可以从本公众号的底部相关菜单获取.有小伙伴反映自己在一些文章中看到openpyxl也能对Excel进行相关的操作,于是留言想 ...

  3. 最详细的Excel模块Openpyxl教程(三)-使用公式

    在之前的推文中,我们介绍了操作Excel的模块openpyxl的cell单元格操作,相关推文可以从本公众号的底部相关菜单获取.接下来的推文我们来学习一下openpyxl这个python模块中的其他知识 ...

  4. 史上最详细的Android Studio系列教程四--Gradle基础

    史上最详细的Android Studio系列教程四--Gradle基础 转载于:https://www.cnblogs.com/zhujiabin/p/5125917.html

  5. python办公自动化模块_Python自动化办公Excel模块openpyxl原理及用法解析

    openpyxl 介绍 openpyxl 是一个直接可用于读写 xlsx .xlsm.xltx.xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动 ...

  6. python添加excel模块_python操作Excel模块openpyxl

    1. 安装 pip install openpyxl 想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体 ...

  7. python自动化办公模块_Python 自动化办公之 Excel 模块 — openpyxl 的基本使用!

    openpyxl 介绍 openpyxl 是一个直接可用于读写 xlsx .xlsm.xltx.xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动 ...

  8. mongodb 持久化 mysql_最详细的python爬虫指南(四):持久化操作(mongoDB、mysql)...

    一.python操作mongodb 先来看下mongodb的基础语法,因为本人用到的不多,所以只是简单整理下mongodb基本语法 01.python写入mongodb import pymongo ...

  9. Office-006 Excel取消过滤和排序Filter Sort

    Excel可以选择第一行进行过滤和排序Filter & Sort.完成操作后如何取消呢? 选择第一行,在Home>>Clear>>Clear Formats.

最新文章

  1. android运动轨迹rungps_android运动轨迹rungps_Android使用百度地图API实现GPS步行轨迹...
  2. 用WDM开发USB驱动程序
  3. 史上最烂的项目:苦撑 12 年,600 多万行代码!
  4. 被声明为已否决 解决方法
  5. servlrt程序的入口点是_小程序深度报告:全网数量约550万,日活跃超4.4亿
  6. redis java应用_Java+Redis应用(第一章)
  7. 自建ELK迁移阿里云日志服务
  8. 抛弃鼠标的神器——Vimium
  9. Android之网络编程利用PHP操作MySql插入数据(四)
  10. 跨站脚本专题 XSS
  11. OpenBSD4.6 FAQ[一]
  12. java之GC日志该怎么看
  13. 微信开发学习日记(八):7步看懂weiphp插件机制,核心目标是响应微信请求
  14. 鸿蒙系统下载地址_华为鸿蒙代码全开源
  15. DRF serializer 自定义列
  16. python爬取豆瓣Top250-改进版
  17. 听见丨三星Bixby中文(普通话)版正式发布 云端服务商Scalyr获2000万美元A轮融资
  18. windows操作系统深度清理垃圾脚本
  19. 入网许可证_入网许可证
  20. 更改linux的用户名

热门文章

  1. Hello Build To Win!我们是奶牛小分队!——记第一次团队作业
  2. 《遥远的救世主》:丁元英为什么没提前把整个计划告诉叶晓明他们?
  3. 基于深度强化学习的人岗匹配算法研究
  4. 【深度学习】logistic回归模型
  5. Python学习 【第三篇】: python基础(二)
  6. 吞吐量测试手机软件,WIFI吞吐量测试.ppt
  7. [懒人日记3]驱动程序开发---Hello Word!
  8. 错误代码0x80070570
  9. 解决Win10系统进行共享时候弹出0x80070035错误代码的方法
  10. Unity3D实现游戏暂停