Python: TypeError: Value must be a sequence

Python: TypeError: Value must be a sequence

我的代码:

def write_excel(filename, sheetname, dataframe):
    with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
        workBook = writer.book
        try:
            workBook.remove(workBook[sheetname])
        except:
            print("Worksheet does not exist")
        finally:
            dataframe.to_excel(writer, sheet_name=sheetname, index=False)
            writer.save()


write_excel(r"C:\Users\Harshad\Documents\Project\Files\Backtest.xlsx", '888', df_normalized)

错误发生在:

 write_excel(r"C:\Users\Harshad\Documents\Project\Files\Backtest.xlsx", '888', df_normalized)

我遇到的错误是:

Traceback (most recent call last):
  File "C:/Users/Harshad/Documents/Project/Code/Step-4-Normalizing 888Sport Odds.py", line 66, in <module>
    write_excel(r"C:\Users\Harshad\Documents\Project\Files\Backtest.xlsx", '888', df_normalized)
  File "C:/Users/Harshad/Documents/Project/Code/Step-4-Normalizing 888Sport Odds.py", line 55, in write_excel
    with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer:
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\pandas\io\excel\_openpyxl.py", line 25, in __init__
    book = load_workbook(self.path)
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
    reader.read()
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\reader\excel.py", line 280, in read
    self.read_worksheets()
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\reader\excel.py", line 266, in read_worksheets
    pivot = TableDefinition.from_tree(tree)
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 83, in from_tree
    obj = desc.from_tree(el)
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\descriptors\sequence.py", line 85, in from_tree
    return [self.expected_type.from_tree(el) for el in node]
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\descriptors\sequence.py", line 85, in <listcomp>
    return [self.expected_type.from_tree(el) for el in node]
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
    return cls(**attrib)
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\pivot\table.py", line 601, in __init__
    self.x = x
  File "C:\Users\Harshad\PycharmProjects\Self Project\venv\lib\site-packages\openpyxl\descriptors\sequence.py", line 25, in __set__
    raise TypeError("Value must be a sequence")
TypeError: Value must be a sequence

这段代码一直有效到昨天。我该如何解决? 谢谢

不知道是否有帮助,但引擎参数已弃用。不过,这个其他答案看起来很有希望:

解决方案:

文档: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.ExcelWriter.html

问题出在 openpyxl 上。我 运行 的版本是 3.0.5。 它适用于 3.0.4,但不适用于更高版本。不过我没有机会测试 3.0.6 版本。 降级到 3.0.4 有帮助并且有效。