【问题标题】:Python: TypeError: Value must be a sequencePython:TypeError:值必须是一个序列
【发布时间】:2021-02-08 11:02:47
【问题描述】:

我的代码:

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

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

【问题讨论】:

  • 请提供预期的minimal, reproducible example (MRE)。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。您发布的代码无法运行。

标签: python typeerror openpyxl


【解决方案1】:

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

解决方案:Pandas Excel Writer using Openpyxl with existing workbook

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2015-09-02
      • 2014-11-16
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2023-01-16
      • 2020-02-27
      • 2023-03-16
      相关资源
      最近更新 更多