我希望将 Dataframe 附加到excel
这段代码几乎可以按预期工作。虽然它不是每次都追加。我运行它,它把 Dataframe 放在excel中。但是每次我运行它,它都不追加。我还听说openpyxl是cpu密集型的,但没有听说过很多workarounds。
import pandas
from openpyxl import load_workbook
book = load_workbook('C:\\OCC.xlsx')
writer = pandas.ExcelWriter('C:\\OCC.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df1.to_excel(writer, index = False)
writer.save()
我希望每次运行它时都追加数据,但这没有发生。
数据输出看起来像原始数据:
A B C
H H H
我想再跑一次
A B C
H H H
H H H
如果这是显而易见的,我对python很陌生,我练习的例子并没有像想要的那样工作,请道歉。
问题是-如何在每次运行时追加数据。我尝试更改xlsxwriter,但得到AttributeError: 'Workbook' object has no attribute 'add_format'
7条答案
按热度按时间aiazj4mn1#
首先,这篇文章是解决方案的第一部分,在这里您应该指定
startrow=
:使用python panda将新 Dataframe 附加到现有Excel工作表你也可以考虑
header=False
.所以它应该看起来像:如果你想让它自动到达工作表的末尾并附加你的df,那么用途:
如果您希望它遍历工作簿中的所有工作表:
btw:对于
writer.sheets
,你可以使用字典理解(我认为它更简洁,但这取决于你,它产生相同的输出):因此完整代码为:
oxf4rvwz2#
您可以使用
append_df_to_excel()
帮助器函数defined in this answer:用法示例:
goqiplq23#
这里所有的例子都相当复杂,在documentation中要简单得多:
当在LibreOffice/OpenOffice excel文件上使用这个时,我得到错误:
这是openpyxl中的一个bug,如所提到的here。
bnlyeluc4#
我试着读取一个excel,把它放到一个数据框中,然后把excel中的数据框与所需的数据框连接起来,这对我很有效。
zd287kbt5#
如果有人需要它,我找到了一个更简单的方法:
将DF转换为列表中的行
加载您的工作簿
挑选你的床单
循环访问要追加的每一行:
完成后保存工作簿
把所有这些放在一起:
lzfw57am6#
jqjz2hbq7#
为什么要复杂化呢?只需在excel文件中获取行数,以确定在哪里追加startrow参数: