Pandas:将数据框保存到已打开的工作簿

4

我有一个数据写入的工作簿。如何添加工作表以写入数据框的内容?

import xlsxwriter
import pandas as pd

workbook = xlsxwriter.Workbook('test.xlsx')
sheet1 = workbook.add_worksheet(name='sheet1')
sheet1.write(0, 0, 'test')
df = pd.DataFrame({'a': [1, 2, 3, 4], 'b': ['aa', 'bb', 'cc', 'dd']})
# write df somehow to next sheet. I usually use df.to_excel(filename, engine='xlsxwriter'), but this will create a new file
workbook.close()

如果这确实是你尝试运行的内容,那么你只是在'test.xlsx之后缺少了一个',这将导致你的代码无法正常工作。 - firelynx
谢谢。我修改了这个例子。显然,这不是我发表这个问题的原因... - orange
你有检查过这个链接吗:https://dev59.com/_mEh5IYBdhLWcg3w0WRP - etna
问题在于 ExcelWriter 不是由 pd.ExcelWriter() 创建的,而是通过 xlsxwriter.Workbook() 来仅写入一些任意的(非 Pandas)数据。不幸的是,你链接中的方法在这里不适用。 - orange
1个回答

3

正如您在评论中所指出的那样,您不能将XlsxWriter工作簿对象传递给pandas的to_excel()函数。

作为解决方法,您可以创建一个带有空数据框的工作表,然后在XlsxWriter工作簿和工作表对象下访问。然后,您可以通过pandas接口添加额外的工作表。

这是一个基于您的代码的小型工作示例:

import pandas as pd

# Create an pandas excel writer based on xlsxwriter.
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

# Create a worksheet with an empty dataframe so the sheet is empty.
df = pd.DataFrame()
df.to_excel(writer, sheet_name='Sheet1')

# Access the underlying xlsxwriter worksheet and write to it.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
worksheet.write(0, 0, 'test')

# Create another dataframe with data.
df = pd.DataFrame({'a': [1, 2, 3, 4],
                   'b': ['aa', 'bb', 'cc', 'dd']})

# Write the dataframe to another worksheet.
df.to_excel(writer, sheet_name='Sheet2')

writer.save()

请参见Python Pandas和XlsxWriter的使用

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接