Pandas:to

您所在的位置:网站首页 excel如何清除内容保留原来格式的内容和内容 Pandas:to

Pandas:to

2023-09-22 12:14| 来源: 网络整理| 查看: 265

如果只是想把一个DataFrame保存为单独的一个Excel文件,那么直接写:

data.to_excel('xxx.excel','sheet1',index=False)

但是这样做,只会保存为单个Excel文件和这个文件中的单个表。

如果先前存在有同名的Excel文件,这样做会把之前的Excel文件覆盖掉,不会起到在原文件中生成新的sheet的作用。

 

解决方法: if not os.path.exists(mon_excel_path): data_write.to_excel(mon_excel_path, f'{mon}.{day}',encoding='GBK', header=['站点', '变化', '次数', '幅度/nt'], index=False) else: with pd.ExcelWriter(mon_excel_path, engine='openpyxl',mode='a') as writer: data_write.to_excel(writer,f'{mon}.{day}', header=['站点', '变化', '次数', '幅度/nt'], index=False) 上文各行代码的解释:

第一个if语句是在Excel文件不存在时,用于直接构建;

第二个if语句则是用ExcelWriter对已存在的Excel文件进行追加。

需要注意的是,如果Excel文件名含有中文,第一句的to_excel中的参数encoding需要写为'GBK',否则会导致追加时生成ExcelWriter异常,报错File is not a ZIP file。

补充

在Pandas 1.2.0版本之后(不含1.2.0),engine参数将弃用xlwt值,因此要使用xlwt引擎,请确保电脑上的pandas版本为1.2.0及以下,或者最好不使用xlwt。

 

 

下文是对ExcelWriter的补充说明,上文已经解决问题的可以不看下文。

ExcelWriter

pandas.ExcelWriter — pandas 1.3.3 documentation

构造

 

pd.ExcelWriter( path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs )

 

说明

这是一个用于把DataFrame对象写入Excel表的辅助类。

默认情况下,用xlwt来写xls,用openpyxl写入xlsx,用odf写入ods。如果想看一些更典型的用例,可以看DataFrame.to_excel

Writer构造时需要像打开文件那样进行上下文管理,也就是,使用with语句块的方式创建。不然的话就需要手动调用close()来关闭保存文件。

参数 参数 类型 默认值 说明 path str   xls、xlsx、ods文件的路径 engine str   引擎 date_format str   date写入Excel后的字符串格式('YYYY-MM-DD') datetime_format str   datetime写入Excel后的字符串格式('YYYY-MM-DD HH:MM:SS') mode {'w','a'} 'w' 写入模式,覆盖还是追加 storage_options dict     if_sheet_exists {'error','new','replace'} 'error' 尝试写入一个已经存在的sheet时的响应方式:错误、新建、替换 engine_kwargs dict   传入引擎中的参数,从1.3.0才启用的 例子 1、构造一个DataFrame,写入xlsx中; df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) with ExcelWriter("path_to_file.xlsx") as writer: df.to_excel(writer) 2、在同一个xlsx文件中,把两个DataFrame分别写入两个SHEET中; df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"]) df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) with ExcelWriter("path_to_file.xlsx") as writer: df1.to_excel(writer, sheet_name="Sheet1") df2.to_excel(writer, sheet_name="Sheet2") 3、设置date和datetime的格式; from datetime import date, datetime df = pd.DataFrame( [ [date(2014, 1, 31), date(1999, 9, 24)], [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)], ], index=["Date", "Datetime"], columns=["X", "Y"], ) with ExcelWriter( "path_to_file.xlsx", date_format="YYYY-MM-DD", datetime_format="YYYY-MM-DD HH:MM:SS" ) as writer: df.to_excel(writer) 4、往已存在的Excel中追加; with ExcelWriter("path_to_file.xlsx",mode='a',engine='openpyxl') as writer: df.to_excel(writer,sheet_name='Sheet3')

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3