我试图保存一些熊猫数据框excel。我希望他们都在同一个excel文件,但每一个在不同的工作表。
这是我现在有的。这只是将所有数据帧保存到单独的文件中。我用的是StyleFrame
。这些数据帧中的一些值具有n
。当我写信给excel时,我希望它在每个单元格中注册为一个新行。
使用StyleFrame
是我能找到的唯一解决方案。
file_path = "path_to_save_files"
StyleFrame(df1).to_excel(file_path + '/df1.xlsx').save()
StyleFrame(df2).to_excel(file_path + '/df2.xlsx').save()
StyleFrame(df3).to_excel(file_path + '/df3.xlsx').save()
这是我试过的。这通常是有效的:
writer = pd.ExcelWriter(f'{file_path}/output.xlsx', engine='xlsxwriter')
StyleFrame(df1).to_excel(writer, sheet_name = "sheet1")
StyleFrame(df2).to_excel(writer, sheet_name = "sheet2")
StyleFrame(df3).to_excel(writer, sheet_name = "sheet3")
然而,因为我使用StyleFrame
,我得到一个错误:
AttributeError: 'Worksheet' object没有属性'sheet_view'
有什么建议吗?
你使用xlsxwriter
作为引擎有什么特别的原因吗?styleframe
只支持openpyxl
,所以这将工作:
writer = pd.ExcelWriter(f'{file_path}/output.xlsx', engine='openpyxl')
df1 = pd.DataFrame({'a':[1]})
df2 = pd.DataFrame({'b':[2]})
StyleFrame(df1).to_excel(writer, sheet_name="sheet1")
StyleFrame(df2).to_excel(writer, sheet_name="sheet2")
writer.save()
注意,你必须显式调用writer.save()
(就像直接使用pandas.DataFrame
一样)。
pd.ExcelWriter(f'{file_path}/output.xlsx', engine='openpyxl')
有一个快捷方式:
writer = StyleFrame.ExcelWriter(f'{file_path}/output.xlsx')