Python xlsxwriter按列过滤并转贴到另一个工作表

1 投票
1 回答
4277 浏览
提问于 2025-04-18 10:03

我觉得我已经超出了自己业余的Python知识范围。我正在使用xlsxwriter来处理一个文本文件,并提取与特定字符串匹配相关的数据。我把抓取到的数据放进一个Excel表格里,表格有四列:时间戳(TIMESTAMP)、字符串匹配值(STRING_MATCH_VALUE)、值1(VALUE1)和值2(VALUE2),就像下面的表格一样,这部分我还做得不错。

输出表格

接下来的任务是尝试根据值1这一列来过滤Excel工作表。这部分让我觉得我的Python知识有点不够用了。我想过滤出值在-88.00到-88.99之间,以及-89.00到-89.99之间的数据,然后把这些过滤后的数据放到Excel的特定工作表里。我查看了xlsxwriter的过滤功能,并在阅读了相关文档后写了一些代码,但我觉得我在用词上有些困惑。如果能给我一些提示,我会非常感激。

worksheetFILTER.autofilter(0, 0, FILTERtot, 3)
worksheetFILTER.filter_column(2, 'x > -89 and x < -88')

# Hide rows here if they don't match
rowfilt = 1
for row_data in (worksheetFILTER):
    value1 = row_data[2]

    # does it match?
    if value1 == (r'88.\d{2}'):
        # yes.
        pass
    else:
        # No - hide rows.
        worksheetFILTER.set_row(rowfilt, options={'hidden': True})

    # Place matched rows to different worksheet
    worksheetFILTERED.write_row(rowfilt, 0, row_data)

    # Move to next row.
    rowfilt += 1

1 个回答

0

类似下面的代码应该可以正常工作:

# Does it match our criteria.
if value1 > -89 and value1 < -88
    # Yes. Then don't filter this row.
    pass
else:
    # No. Then hide the row.
    worksheetFILTER.set_row(rowfilt, options={'hidden': True})

基本上,这里的条件应该和你之前设置的自动筛选条件一致:

worksheetFILTER.filter_column(2, 'x > -89 and x < -88')

想了解更多细节,可以查看文档中关于使用自动筛选的部分,以及autofilter.py中的自动筛选示例。

撰写回答