我尝试使用自动过滤器从Python pandas dataframe创建一个excel文件,以显示默认的无效数据。
这是我的输入数据框df:
ITEM RESULT
A1 VALID
A2 VALID
A# INVALID
我想添加一个工作表'过滤器测试'在现有的Excel文件' filter_output.xlsx'并将自动过滤器设置为列'结果'仅显示' INVALID'数据默认。
这是我的代码:
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数据帧的默认值?
答案 0 :(得分:0)
我一直在找同样的,但是找不到这个bug。 审判/错误导致我决定您需要使用列表
ws.auto_filter.add_filter_column(1, ['INVALID'], blank=False)