根据https://github.com/pandas-dev/pandas/pull/21251/files/09e5b456e1af5cde55f18f903ab90c761643b05a,我们应该能够将 Dataframe 附加到新的XLSX工作表。
根据文档,我尝试了以下操作:
>>> import pandas as pd
>>>
... d1 = pd.DataFrame({"A":['Bob','Joe', 'Mark'],
... "B":['5', '10', '20']})
>>> d2 = pd.DataFrame({"A":['Jeffrey','Ann', 'Sue'],
... "B":['1', '2', '3']})
>>>
>>> # Create XLSX document for ticker
... writer = pd.ExcelWriter('test.xlsx',engine='openpyxl')
>>> d1.to_excel(writer,sheet_name='d1')
>>> writer.save()
>>>
>>> writer = pd.ExcelWriter('test.xlsx',engine='openpyxl', mode='a')
>>> d2.to_excel(writer,sheet_name='d2')
>>> writer.save()
>>>
>>> pd.__version__
'0.23.4' # Just updated this per a comment
>>>
>>>
结果是一个名为“test.xlsx”的工作簿,其中只有一个选项卡“d2”。
如何防止工作簿/工作表表单被覆盖?
4条答案
按热度按时间fsi0uk1n1#
您可以使用
with
:更新
这应该可以工作,只是需要注意一个空白文件需要事先创建。如果你想的话,你可以用python创建一个空白文件。我创建了一个简单的循环,在某些方面模仿了你要完成的事情的本质:
或者这里是修改的第一示例:
64jmpszr2#
我在GitHub上提交了一个帖子,并收到了来自贡献者的回复(见下面突出显示的部分)。原来这个功能要到
0.24
才能发布,所以它在0.23.1
中不可用。仅供参考-我下载了RC并成功地试用了mode='a'
选项。但是,可能有一个bug与不存在的工作簿有关;我收到FileNotFoundError: [Errno 2] No such file or directory: 'test.xlsx'
。“此功能是作为0.24的一部分发布的,我们在过去几天里刚刚发布了一个候选版本。您可以在RC或Master上试用,如果两者都不起作用,请按照贡献指南打开一个问题,但这在比它更旧的版本上不起作用”
vulvrdjw3#
进口Pandas当PD
eit6fx6z4#
这对我很有效,如果文件不存在,它会创建一个文件,如果文件已经存在,它会追加到文件的末尾
你可能需要安装
openpyxl