只要是不同的工作表,在excel工作簿中添加许多pandas数据框是很容易的。但是,如果你想使用pandas内置的www.example.com _excel功能,在一个工作表中添加许多数据框就有点棘手df.to了。
# Creating Excel Writer Object from Pandas
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')
workbook=writer.book
worksheet=workbook.add_worksheet('Validation')
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0)
上面的代码将不起作用。您将得到以下错误
Sheetname 'Validation', with case ignored, is already in use.
现在,我已经做了足够的实验,我找到了一种方法来使它工作。
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter') # Creating Excel Writer Object from Pandas
workbook=writer.book
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0)
这将工作.所以,我的目的张贴在stackoverflow这个问题是双重的.首先,我希望这将有助于有人如果他/她试图把许多dataframes到一个单一的工作表在excel.
其次,有人能帮助我理解这两个代码块之间的区别吗?在我看来,它们几乎是相同的,除了第一个代码块创建工作表称为“验证”提前,而第二个没有.我得到了这一部分.
我不明白的是为什么会有什么不同呢?即使我没有提前创建工作表,这一行,最后一行的前一行,
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
将创建一个工作表。因此,当我们到达最后一行代码时,工作表“验证”已经在第二个代码块中创建。所以,我的问题基本上是,为什么第二个代码块可以工作,而第一个不能?
如果还有其他方法可以使用内置的www.example.com _excel功能将许多数据框放入excel中,请与我们分享df.to!!
6条答案
按热度按时间8ehkhllq1#
要提前创建工作表,需要将创建的工作表添加到
sheets
字典中:writer.sheets['Validation'] = worksheet
使用您的原始代码:
说明
如果我们看一下pandas函数
to_excel
,它使用了作者的write_cells
函数:所以看看
xlsxwriter
的write_cells
函数:在这里我们可以看到,它在
self.sheets
中检查sheet_name
,因此也需要将其添加到self.sheets
中。m4pnthwp2#
用户3817518:“请分享是否有其他方法可以使用内置的www.example.com _excel功能将许多数据框放入exceldf.to!!”
以下是我的尝试:
简单的方法把很多 Dataframe 放在一个工作表或多个标签。让我知道如果这工作!
--要进行测试,只需运行示例 Dataframe 以及第二和第三部分代码。
Dataframe 示例
将多个数据框放入一个xlsx表中
将多个数据框放在不同的标签/表单中
mum43rcc3#
阿德里安的回答可以简化如下
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter') df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0) another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0)
适用于pandas
0.25.3
和python3.7.6
fnvucqvd4#
使用
with
-您不必显式调用writer.save()
或writer.close()
。此外,如果您使用
workbook=writer.book
,它会自动管理workbook.close()
。(其他答案忘了这样做,而这种情况相当经常发生,因为我们是人;)
结果:
44u64gxh5#
我更倾向于先连接 Dataframe ,然后将 Dataframe 转换为Excel格式。要将两个 Dataframe 并排放在一起(而不是一个在另一个上面),请执行以下操作:
5hcedyr06#
将多个数据框写入一张excel表