0

我目前有一个 excel 文件,例如 3 张纸。我想根据来自 2 个 pandas 数据框(每张表 1 个数据框)的新值更改其中 2 张工作表。

这是我目前拥有的代码:

from openpyxl.writer.excel import ExcelWriter
from openpyxl import load_workbook

path = r"Libraries\Documents\Current_Standings.xlsx"
book = load_workbook('Current_Standings.xlsx')
writer = pd.ExcelWriter(path, 'Current_Standings.xlsx', 
engine='openpyxl')
writer.book = writer
Blank_Propensity_Scores.to_excel(writer, sheet_name = 
'Blank_Propensity.xlsx')
Leads_by_Rep.to_excel(writer,sheet_name = 'Leads_by_Rep.xlsx')
writer.save()

当我运行它时,我收到以下错误消息,不知道为什么,因为我查看的每个堆栈溢出答案只有一项用于 openpyxl:

TypeError: __new__() got multiple values for argument 'engine'

我还尝试摆脱 engine='openpyxl' 参数,但是当我这样做时,我收到以下错误消息:

ValueError: No Excel writer 'Current_Standings.xlsx'
4

1 回答 1

1

如果您在 Python 命令行上执行命令“help(pd.ExcelWriter)”,您将在第一行看到参数:

class ExcelWriter(builtins.object)
 |  Class for writing DataFrame objects into excel sheets, default is to use
 |  xlwt for xls, openpyxl for xlsx.  See DataFrame.to_excel for typical usage.
 |
 |  Parameters
 |  ----------
 |  path : string
 |      Path to xls or xlsx file.
 |  engine : string (optional)
 |      Engine to use for writing. If None, defaults to
 |      ``io.excel.<extension>.writer``.  NOTE: can only be passed as a keyword
 |      argument.
 |  date_format : string, default None
 |      Format string for dates written into Excel files (e.g. 'YYYY-MM-DD')
 |  datetime_format : string, default None
 |      Format string for datetime objects written into Excel files
 |      (e.g. 'YYYY-MM-DD HH:MM:SS')
 |

换句话说,按顺序排列的第二个参数是引擎。因此,如果您放置一个没有任何爆炸的字符串,它就会被视为引擎(尽管有关仅将此参数作为关键字传递的帮助中的注释,似乎这就是行为)。如果你再次输入engine='openpyxl',那么你定义了参数'engine'两次。

这是错误的原因

TypeError: __new__() got multiple values for argument 'engine'

总之,您应该只使用两个参数调用 ExcelWriter。第一个是您的 Excel 文件的路径(我猜是变量“路径”)和引擎。

于 2018-03-21T21:34:20.267 回答