在pandas中我们通常使用to_excel()
方法将dataframe导出至Excel文件上,如果需要将多个不同的dataframe导出到同一个Excel文件的不同Sheet页,可以使用pandas.ExcelWriter()
类来实现。
语法:
ExcelWriter(path, engine=None, date_format=None, datetime_format=None,mode=‘w’)
- path:xls或xlsx文件的路径;
- engine:可选参数,默认值为"xlwt",对于xls文件该参数值为"xlwt"有效,对于xlsx文件该参数值为"openpyxl"有效;
- date_format:格式字符串,用于写入Excel文件的日期(例如“ YYYY-MM-DD”);
- datetime_format:写入Excel文件的日期时间对象的格式字符串。 (例如“ YYYY-MM-DD HH:MM:SS”)
- mode:可选参数,{‘w’, ‘a’}, 默认为 ‘w’,即擦除目标文件原内容,将dataframe覆盖式导出至目标Excel文件。当为’a’时,将dataframe追加导入至目标Excel文件,目标文件中原内容保留。此处需注意,如果为’a’,且导出的为xlsx文件,需将该参数修改为"openpyxl"。
实例:
import pandas as pd
import numpy as np
test=pd.DataFrame(np.arange(0,100).reshape([25,4]))
test1=pd.DataFrame(np.arange(100,200).reshape([25,4]))
writer = pd.ExcelWriter(r"C:\Users\user_name\Desktop\test.xlsx",engine="openpyxl",mode="a")#追加式导出,不覆目标文件盖原有内容
test.to_excel(writer,"test",index=False)#将test导出至名为test的Sheet页上
test1.to_excel(writer,"test1",index=False)#将test1导出至名为test1的Sheet页上
writer.save()
最终导出的结果如下所示:
需要注意的是:
如果导出的数据中含有大量的URL,EXCEL单张表格中对URL是存在数量限制的,如果超过这个限制,将无法将超出范围的URL数据导出至EXCEL(该过程不会报错)。通过增加options参数将URL转化为字符,这样可以避免该情况。
writer = pd.ExcelWriter(file_path+r"\option_excel.xlsx",options={'strings_to_urls': False})