将DataFrame附加到Excel中使用pandas

10 浏览
0 Comments

将DataFrame附加到Excel中使用pandas

我希望将数据框追加到Excel中

这段代码几乎符合我的要求。尽管它没有每次都追加。我运行它并将数据框放入Excel中。但每次运行它时都不会追加。我听说openpyxl对CPU要求较高,但还没有听说有很多解决办法。

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'`错误。

0
0 Comments

问题出现的原因:

使用append_df_to_excel()函数时,出现了“Value must be a sequence”错误。

解决方法:

这个错误的原因可能是传递给函数的参数不是一个序列。要解决这个问题,可以检查传递给函数的参数是否正确,并确保它们是序列类型。

以下是一些可能的解决方法:

1. 检查传递给函数的df参数是否是一个DataFrame对象,因为该函数的第二个参数应该是一个DataFrame对象。

2. 检查传递给函数的header参数是否是一个序列,如果不是,请将其更改为一个序列类型(例如列表)。

3. 如果传递了sheet_name参数,请确保它是一个字符串类型。

4. 如果传递了startrow参数,请确保它是一个整数类型。

如果以上方法都没有解决问题,请参考以下链接中的答案,其中提供了一些关于如何解决这个错误的更多信息:https://stackoverflow.com/a/38075046/5741205

希望以上解决方法能够帮助解决这个问题。

0
0 Comments

问题:如何使用pandas将DataFrame追加到Excel文件中?

原因:在使用pandas的to_excel方法将DataFrame追加到Excel文件时,可能会遇到以下问题:

1. 当使用LibreOffice/OpenOffice打开的Excel文件时,可能会出现KeyError: "There is no item named 'xl/drawings/drawing1.xml' in the archive"错误,这是openpyxl的一个bug。

2. 当使用xlsxwriter作为Excel写入器时,可能会出现ValueError: Append mode is not supported with xlsxwriter!错误。

解决方法:

1. 对于遇到第一个问题的情况,可以使用下面的代码将DataFrame追加到Excel文件中:

def append_to_excel(fpath, df, sheet_name):
    with pd.ExcelWriter(fpath, mode="a") as f:
        df.to_excel(f, sheet_name=sheet_name)
append_to_excel(, , )

其中,为Excel文件的路径,为要追加的新DataFrame,为新的工作表名称。

2. 对于遇到第二个问题的情况,可以使用pandas的ExcelWriter类来实现追加功能。具体代码如下:

with pd.ExcelWriter(, mode='a') as writer:
    df.to_excel(writer, sheet_name=, engine='xlsxwriter')

其中,为Excel文件的路径,为新的工作表名称。

以上就是使用pandas将DataFrame追加到Excel文件中的原因及解决方法。

0
0 Comments

问题的原因是在使用pandas将DataFrame追加到Excel文件时,需要指定插入的起始行。解决方法是根据需求使用startrow=参数来指定起始行。另外,如果不需要在Excel文件中插入标题行,可以使用header=False参数。

如果希望自动追加到工作表的末尾,可以使用startrow = writer.sheets['Sheet1'].max_row来获取当前工作表的最后一行。

如果需要在工作簿的所有工作表上追加数据,可以使用循环遍历所有工作表并使用startrow=writer.sheets[sheetname].max_row来获取每个工作表的最后一行。

同时,可以使用字典推导式来简化代码:writer.sheets = {ws.title: ws for ws in book.worksheets}

完整的代码如下:

import pandas
from openpyxl import load_workbook
book = load_workbook('test.xlsx')
writer = pandas.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
for sheetname in writer.sheets:
    df1.to_excel(writer, sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index=False, header=False)
writer.save()

这段代码在pandas 0.24.2版本和Python 2中测试通过,也适用于0.19.2版本。

对于某些情况下,在获取最后一行时会出现工作表名称报错的问题,可以在max_row行的代码中排查错误。

0