python - 筛选 Excel 表格

标签 python excel vba

我有 2 个 excel 文件:IDList.csv 和 Database.csv。 IDList 包含我要从数据库中过滤掉的 300 个 ID 号的列表,其中包含 2000 个条目(在数据库中留下 1700 个条目)。

我尝试编写一个 for 循环(对于 IDList 中的每个 ID,在 Database.csv 中过滤掉该 ID)但是我在使用过滤函数时遇到了一些问题。我正在使用 Pyvot (http://packages.python.org/Pyvot/tutorial.html)。我收到语法错误...Python/Pyvot 不喜欢我的 xl.filter 语法,但我不知道如何更正语法。文档是这样说的:

xl.tools.filter(功能,范围) 通过将 func 应用于给定范围来过滤行或列。为范围中的每个值调用 func。如果它返回 False,则隐藏相应的行/列。否则,行/列可见。

范围必须是行或列向量。如果是行向量,则隐藏列,反之亦然。

请注意,要取消隐藏行/列,范围必须包括隐藏的单元格。例如,要取消隐藏范围: xl.filter(lambda v: True, some_vector.including_hidden)

这是我的代码:

import xl 

IDList = xl.Workbook("IDList.xls").get("A1:A200").get() 

for i in range(1,301):
     xl.filter(!=IDList[i-1],"A1:A2000")

如何使用 IDList.csv 中的条件过滤 Database.csv 中的列?尽管我更喜欢 Python,但我愿意接受 Python 或 Excel VBA 宏中的解决方案。

最佳答案

import csv

with open("IDList.csv","rb") as inf:
    incsv = csv.reader(inf)
    not_wanted = set(row[0] for row in incsv)

with open("Database.csv","rb") as inf, open("FilteredDatabase.csv","wb") as outf:
    incsv = csv.reader(inf)
    outcsv = csv.writer(outf)
    outcsv.writerows(row for row in incsv if row[0] not in not_wanted)

关于python - 筛选 Excel 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054971/

相关文章:

excel - 无法使用 Excel VBA 取消合并单元格

python - 使用基于函数的 View 更新 View

python - 在 python 中遍历巨大的范围

java - 将excel读入java - 如何简化

excel - VBA excel(宏)

sql - 如何从 adodb 记录集 Excel VBA 中的一列中选择不同的值?

python - Bokeh 在悬停中将数字转换为货币字符串

python - 如何根据系列值从 DataFrame 中删除行

vba - VBA 中的 WorksheetFunction.IsNumber() 和 IsNumeric() 有什么区别?

excel - 将 ADODB 循环转换为 DAO