繁体   English   中英

Python如何从熊猫数据框和openpyxl使用自动过滤器创建excel

[英]Python how to create excel with autofilter from pandas dataframe and openpyxl

我尝试使用自动过滤器从Python pandas数据框创建一个excel文件,以默认显示无效数据。

这是我的输入数据框df:

ITEM   RESULT
A1    VALID
A2    VALID
A#  INVALID

我想在现有的excel文件“ filter_output.xlsx”上添加工作表“过滤器测试”,并将自动过滤器设置为“结果”列,以默认情况下仅显示“无效”数据。

这是我的代码:

   import pandas as pd
   from openpyxl import load_workbook

   workbook=load_workbook('filter_output.xlsx')
   writer = pd.ExcelWriter('filter_output.xlsx', engine='openpyxl')
   writer.book=workbook
   df.to_excel(writer, 'filter test', index=False)
   ws=writer.sheets['filter test']
   ws.auto_filter.ref='A:B'
   ws.auto_filter.add_filter_column(1, 'INVALID', blank=False)
   writer.save()
   workbook.close()

我收到以下错误:

  ws.auto_filter.add_filter_column(1, 'INVALID', blank=False)
  File "C:\Python27\lib\site-packages\openpyxl\worksheet\filters.py", line 357, in add_filter_column
    self.filterColumn.append(FilterColumn(colId=col_id, vals=vals, blank=blank))
  File "C:\Python27\lib\site-packages\openpyxl\worksheet\filters.py", line 315, in __init__
    self.filters.filter = vals
  File "C:\Python27\lib\site-packages\openpyxl\descriptors\sequence.py", line 26, in __set__
    raise TypeError("Value must be a sequence")
TypeError: Value must be a sequence

关于如何解决此错误的任何想法吗? 有没有更好的方法来创建具有自动筛选功能的excel,以仅显示pandas数据框的默认值?

我一直在寻找相同的东西,但找不到错误。 尝试/错误使我做出了您需要使用列表的决定

ws.auto_filter.add_filter_column(1, ['INVALID'], blank=False)

参考https://openpyxl.readthedocs.io/en/2.5/filters.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM