根据pandas数据框

时间:2018-03-21 18:15:21

标签: python python-3.x pandas openpyxl pandas.excelwriter

我目前有一个excel文件,最简单可行的例子,说3张。我想更改其中2张表来基于来自2个pandas数据帧的新值(每张表1个数据帧)。

这是我目前的代码:

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()

当我运行这个时,我得到以下错误消息,不知道为什么,因为我看过的每个堆栈溢出答案只有1项openpyxl:

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

我也尝试过摆脱引擎=' openpyxl'参数,但当我这样做时,我得到以下错误信息:

ValueError: No Excel writer 'Current_Standings.xlsx'

1 个答案:

答案 0 :(得分: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 =&#39; openpyxl&#39;,那么您正在定义参数&#39; engine&#39;两次。

这是错误的原因

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

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