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_数据筛选比较的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)

    系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...

  2. DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样

    '近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. ...

  3. layui table 根据条件改变更换表格颜色 高亮显示 数据筛选

    请问想让当layui表格的某个字段符合某个条件的时候,让该行变颜色.这样可以实现么. layui数据表格怎么更换表格颜色 layui表格 通过判断某一行中的某一列的值进行设置这一行的颜色 LayUI之 ...

  4. C#进行数据筛选(二)

    这里介绍LINQ+Lambda表达式进行数据筛选的方式 这里是第一种方式,还是使用了if条件语句去判断,根据选择的条件去筛选出我所需要的数据 public GxAnaly SelectDay(stri ...

  5. C#进行数据筛选(一)

    这里介绍数据筛选的第一种方式,不用过滤器,给新手看得 public DataTable SourceList(string Wmain, string OrderNo, string Process) ...

  6. python之pandas数据筛选和csv操作

    本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...

  7. Pandas 数据筛选,去重结合group by

    Pandas 数据筛选,去重结合group by 需求 今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下: 姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址. ...

  8. 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数

    MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...

  9. 4-Pandas之数据类型与数据筛选

    一.数据类型 1.Pandas的数据类型主要结合了pandas和numpy两个模块中的数据类型,包括以下几种: float int bool datetime64[ns]------>日期类型 ...

随机推荐

  1. ORA-00017: session requested to set trace event 请求会话以设置跟踪事件

    ORA-00017: session requested to set trace event   ORA-00017: 请求会话以设置跟踪事件 Cause:       The current se ...

  2. 第十四周C++学习总结

    类模板使用方法:类模板名 <数据类型> 对象名: C++有个标准模板库(STL)(standard template library),编程时使用它会提高程序的可靠性. Stl 包含了(容 ...

  3. dockerfile关键字

    DockerFile关键字(保留字指令) FORM:基础镜像,表明当前镜像是基于那么镜像的 MAINTAINER :镜像维护者的名字和邮箱地址 RUN:容器构建时需要用到的命令 EXPOSE:当前容器 ...

  4. Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射

    索引的创建及删除 1. 通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 利用Kibana提供的DevTools来执行命令,要创建一个索引 ...

  5. go 参数传递的是值还是引用 (转)

    https://blog.csdn.net/qq_16059847/article/details/104062759

  6. python保存图片

    #coding=utf-8 import requests url ="https://images.pexels.com/photos/1181767/pexels-photo-11817 ...

  7. CentOS 网卡固定地址配置

    修改4个文件后重启网卡 vim /etc/default/grub GRUB_CMDLINE_LINUX="resume=UUID=05dbb36b-dbba-40a3-ba99-1b044 ...

  8. vue知识点10

    今天彻底掌握了如下: 1.解决回调地狱三种方案        callback async await Promise 2.中间件(middleware)        express.static  ...

  9. HashMap循环中Remove带来的问题

    HashMap在循环中执行remove操作会报错,引发了并发修改异常. 解决办法很多: 1.复制一个Map,在Map副本中循环,Map本体执行remove方法. 2.使用迭代器移除当前迭代元素,ite ...

  10. 【手摸手,带你搭建前后端分离商城系统】03 整合Spring Security token 实现方案,完成主业务登录

    [手摸手,带你搭建前后端分离商城系统]03 整合Spring Security token 实现方案,完成主业务登录 上节里面,我们已经将基本的前端 VUE + Element UI 整合到了一起.并 ...