Pandas_VBA_数据筛选比较
Pandas与VBA筛选数据的比较
Author:Collin_PXY
需求:
将B列里值为Completed 和 Pending的A,B,D三列数据筛选出来,新建一个名为 Filited_data的worksheet来存放筛选数据。
Python解决:
from pandas import DataFrame
import pandas as pd
import openpyxl
# 处理数据
file_path = r"C:\Users\12078\Desktop\UIPATH_test\filter_data\data_need_to_be_filtered_python.xlsx"
df=pd.read_excel(file_path)
df=df.loc[df['status']!="Cancelled",['CNUM','status',"Tax"]]
df=df.reset_index(drop=True)
df['Tax']=df['Tax'].astype("float")
# 保存数据
writer = pd.ExcelWriter(file_path,engine='openpyxl')
writer.book = openpyxl.load_workbook(writer.path) # 此句如果缺少,后面语句执行时会覆盖文件里原有内容。
df.to_excel(excel_writer=writer,sheet_name="Filited_data",index=False) # 会新建一个新建 Filited_data,如果已经存在,则加数字后缀。
writer.save()
writer.close()
VBA解决
Sub FilterData()
On Error GoTo errorhandling
Dim wb_data As Workbook
Dim ws_data As Worksheet
Dim ws_filted As Worksheet
Dim file_path As String
Dim usedrows As Integer
Dim arr_filter As Variant
arr_filter = Array("status", "Completed", "Pending")
file_path = "C:\Users\12078\Desktop\UIPATH_test\filter_data\data_need_to_be_filtered.xlsx"
Set wb_data = checkAndAttachWorkbook(file_path)
Set ws_data = wb_data.Worksheets("data")
wb_data.Worksheets.Add(After:=Worksheets("data")).Name = "Filted_data"
Set ws_filted = wb_data.Worksheets("Filted_data")
usedrows = getLastValidRow(ws_data, "B")
ws_data.Range("$A$1:$D$" & usedrows).AutoFilter Field:=2, Criteria1:=arr_filter, Operator:=xlFilterValues
'Copy column A,B,D to new sheet:
'ws_data.Range("A1:D" & usedrows).SpecialCells(xlCellTypeVisible).Copy ws_filted.Range("A1")
'Copy column A,B,D to new sheet:
Union(ws_data.Range("A1:B" & usedrows), ws_data.Range("D1:D" & usedrows)).Copy ws_filted.Range("A1")
ws_filted.Cells.WrapText = False
ws_filted.Columns("A:AF").AutoFit
checkAndCloseWorkbook file_path, True
Exit Sub
errorhandling:
checkAndCloseWorkbook file_path, False
End Sub
'辅助函数:
'Get last row of Column N in a Worksheet
Function getLastValidRow(in_ws As Worksheet, in_col As String)
getLastValidRow = in_ws.Cells(in_ws.Rows.count, in_col).End(xlUp).Row
End Function
Function checkAndAttachWorkbook(in_wb_path As String) As Workbook
Dim wb As Workbook
Dim mywb As String
mywb = in_wb_path
For Each wb In Workbooks
If LCase(wb.FullName) = LCase(mywb) Then
Set checkAndAttachWorkbook = wb
Exit Function
End If
Next
Set wb = Workbooks.Open(in_wb_path, UpdateLinks:=0)
Set checkAndAttachWorkbook = wb
End Function
Function checkAndCloseWorkbook(in_wb_path As String, in_saved As Boolean)
Dim wb As Workbook
Dim mywb As String
mywb = in_wb_path
For Each wb In Workbooks
If LCase(wb.FullName) = LCase(mywb) Then
wb.Close Savechanges:=in_saved
Exit Function
End If
Next
End Function
结果

Pandas_VBA_数据筛选比较的更多相关文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)
系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...
- DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样
'近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. ...
- layui table 根据条件改变更换表格颜色 高亮显示 数据筛选
请问想让当layui表格的某个字段符合某个条件的时候,让该行变颜色.这样可以实现么. layui数据表格怎么更换表格颜色 layui表格 通过判断某一行中的某一列的值进行设置这一行的颜色 LayUI之 ...
- C#进行数据筛选(二)
这里介绍LINQ+Lambda表达式进行数据筛选的方式 这里是第一种方式,还是使用了if条件语句去判断,根据选择的条件去筛选出我所需要的数据 public GxAnaly SelectDay(stri ...
- C#进行数据筛选(一)
这里介绍数据筛选的第一种方式,不用过滤器,给新手看得 public DataTable SourceList(string Wmain, string OrderNo, string Process) ...
- python之pandas数据筛选和csv操作
本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...
- Pandas 数据筛选,去重结合group by
Pandas 数据筛选,去重结合group by 需求 今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下: 姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址. ...
- 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数
MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...
- 4-Pandas之数据类型与数据筛选
一.数据类型 1.Pandas的数据类型主要结合了pandas和numpy两个模块中的数据类型,包括以下几种: float int bool datetime64[ns]------>日期类型 ...
随机推荐
- HttpReports 2.0 发布了 !!!
前言介绍 HttpReports 是基于.Net Core 开发的APM监控系统,使用MIT开源协议,主要功能包括,统计, 分析, 可视化, 监控,追踪等,适合在微服务环境中使用. Github地址: ...
- ubuntu20 使用命令安装 nginx
安装 nginx sudo apt-get install nginx -y 配置文件 nginx 服务管理 # 启动 nginx 服务 service nginx start # 关闭 nginx ...
- ansible-playbook通过github拉取部署Lnmp环境
1. 配置服务器初始化 1.1) 关闭防火墙和selinux 1 [root@test-1 ~]# /bin/systemctl stop firewalld 2 [root@test-1 ~]# ...
- 使用git 版本控制的代码在线修调试,如何还原
在线调试: 先切换成www用户进入项目的根目录比如/data/wwwroot/website su www cd /data/wwwroot/website vi ./api/controllers/ ...
- client: c#+protobuf, server: golang+protobuf
前段时间看到一篇博文<可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)>,他是用C#实现的即时通讯系统,功能强大,界面漂亮. 就想用golang重写服务端,把代码下载 ...
- linux内核输入子系统分析
1.为何引入input system? 以前我们写一些输入设备(键盘.鼠标等)的驱动都是采用字符设备.混杂设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可 ...
- docker 和 k8s 调研总结
一. docker简介 环境配置 软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事:操作系统的设置,各种库和组件的安装. ...
- 【故障公告】博客系统升级到 .NET 5.0 引发的故障
昨天晚上我们将博客系统从 .NET Core 3.1 升级到了 .NET 5.0 ,本来是一次很有信心的升级,但没有想到在今天下午访问高峰时竟然出现了故障,大量请求访问速度变慢或者因为下面的数据库连接 ...
- GA001-181-21
Composite State with History The Composite State with History Pattern describes an entity (e.g. Cl ...
- mac安装go环境
下载pkg文件 https://golang.google.cn/dl/ sudo vim /etc/profile export GOROOT=/usr/local/go export GOPA ...