【问题标题】:Python how to create excel with autofilter from pandas dataframe and openpyxlPython如何使用pandas数据框和openpyxl的自动过滤器创建excel
【发布时间】:2018-01-02 05:51:36
【问题描述】:

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

这是我的输入数据框 df:

ITEM   RESULT
A1    VALID
A2    VALID
A#  INVALID

我想在现有的 excel 文件“filter_output.xlsx”上添加一个工作表“filter test”,并将自动过滤器设置为“RESULT”列以默认仅显示“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 数据框的默认值?

【问题讨论】:

  • 输入为:raw_data = {'ITEM': ['A1', 'A2', 'A#'], 'RESULT': ['VALID', 'VALID','INVALID']} df = pd.DataFrame(raw_data, columns = ['ITEM', 'RESULT'])

标签: python excel pandas dataframe openpyxl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 2018-09-05
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    相关资源
    最近更新 更多