如果只是把DataFrame数据保存为单独的一个Excel文件,那么可以直接用data.to_excel,但是这样,只会保存为单个Excel文件和这个文件中的单个表。

# 只保存单个Excel文件中单个表,之前的都会被覆盖掉
data.to_excel(r'E:\xxx.xlsx', 'Sheet1', index=False)

解决方法:


import os
import pandas as pd
from openpyxl import Workbook,load_workbookexcel_path = r'E:\xxx.xlsx'
# 如果Excel文不存在,则直接新建文件,数据存在df中
if not os.path.exists(excel_path):df.to_excel(excel_path, 'Sheet1',encoding='GBK', header=True, index=False)else:# 如果存在,则对原文件进行追加 mode='a'with pd.ExcelWriter(excel_path, engine='openpyxl',mode='a') as writer:df.to_excel(writer, 'Sheet1', header=True, index=False)

需要注意的是,如果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。

下文是pandas.ExcelWriter 的说明,用于把DataFrame对象写入Excel表的辅助类。


# 默认情况下,用xlwt来写xls,用openpyxl写入xlsx,用odf写入odspd.ExcelWriter(path, engine=None, date_format=None, datetime_format=None,mode='w', storage_options=None, if_sheet_exists=None,engine_kwargs=None, **kwargs
)

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

几个例子

构造一个DataFrame,并写入xlsx中:

df = pd.DataFrame([["600000.sh", "10.2"],["600016.sh", "6.2"]], columns=["ts_code", "close"])
with pd.ExcelWriter("path_to_file.xlsx") as writer:df.to_excel(writer)

在同一个xlsx文件中,把两个DataFrame分别写入两个Sheet中:


df1 = pd.DataFrame([["600000.sh", "10.2"]], columns=["ts_code", "close"])
df2 = pd.DataFrame([["600016.sh", "6.2"]], columns=["ts_code", "close"])
with pd.ExcelWriter(r'E:\xxx.xlsx') as writer:df1.to_excel(writer, sheet_name="Sheet1")df2.to_excel(writer, sheet_name="Sheet2")

设置 date 和 datetime 的格式:


from datetime import date, datetime
df = pd.DataFrame([[date(2022, 10, 21), date(2020, 1, 12)],[datetime(2018, 2, 14, 12, 32, 5), datetime(2016, 5, 16, 12, 2, 33)],],index=["Date", "Datetime"],columns=["X", "Y"],
)
with pd.ExcelWriter(r'E:\xxx.xlsx',date_format='YYYY-MM-DD',datetime_format='YYYY-MM-DD HH:MM:SS'
) as writer:df.to_excel(writer, sheet_name='Sheet1')

对已存在的Excel文件追加Sheet表:


with pd.ExcelWriter(r'E:\xxx.xlsx', mode='a', engine='openpyxl') as writer:df.to_excel(writer, sheet_name='Sheet3')

ExcelWriter类:用to_excel时不覆盖之前的Excel表相关推荐

  1. 在类中用class时数据是共有还是私有_jvm学习笔记之class文件的加载、初始化

    编写的java文件在要真正运行时,会首先被编译成 ".class"结尾的二进制文件,然后被虚拟机加载.那么在虚拟机中一个class文件要成为java实例,需要经历好几个步骤: 1. ...

  2. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )

    文章目录 I . 属性覆盖基本方式 II . 属性覆盖的四种情况 III . 常量 ( val ) / 变量 ( var ) 属性覆盖 IV . 子类初始化时考虑覆盖属性的使用 I . 属性覆盖基本方 ...

  3. 关于Static控件背景透明时文本覆盖重影的问题

    2019独角兽企业重金招聘Python工程师标准>>> 关于Static控件背景透明时文本覆盖重影的问题 通过映射OnCtlColor消息,而后在该函数中使用pDC->SetB ...

  4. python创建文件夹 覆盖_Python 创建新文件时避免覆盖已有的同名文件的解决方法...

    思路:创建文件时,先检查是否有同名文件(使用os.path.isfile),如果有,则在文件名后加上编号n来创建. 关键点: 1. 使用os.path.isfile判断文件是否存在 2. 使用递归函数 ...

  5. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入

    构造方法与重载:定义一个网络用户类,信息有用户 ID.用户密码. email 地址.在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用 ...

  6. JAVA调试出现不断在ClassLoader类中执行时的问题?

    在Eclipse中进行JAVA调试时,出现不断在ClassLoader类中执行时的问题? 解决方法: (1)打开window - Show view - Other - Debug - Breakpo ...

  7. 习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor类对象prof1时给出所有数据的初值,然后修改prof1的生日数据。。。

    C++程序设计(第三版) 谭浩强 习题11.10 个人设计 习题 11.10 将本章11.8节中的程序片段加以补充完善,成为一个完整的程序.在程序中使用继承和组合.在定义Professor类对象pro ...

  8. 6-14 时间类 - 14. 完善时、分、秒的设置

    请修改时间类的设置时.分.秒的函数,若参数正确,则修改时间,否则时间不变. #include <iostream> #include <iomanip> using names ...

  9. endorsed java_Java中jdk提供的类怎么利用endorsed进行覆盖

    Java中jdk提供的类怎么利用endorsed进行覆盖 发布时间:2020-12-03 16:44:03 来源:亿速云 阅读:70 作者:Leah 这篇文章将为大家详细讲解有关Java中jdk提供的 ...

最新文章

  1. SAP QM 通过控制图 (Control Chart) 的实现提升企业质量管理水平
  2. python3.6for循环_使用parser_args值输入for循环(python3.6)
  3. 解决java前后端分离端口跨域问题
  4. 动态库、静态库、运行时库、引入库之间的区别
  5. Redis持久化(转载)
  6. Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析
  7. python创建角色_如何使用 Python 创建一名可操控的角色玩家
  8. 安装Kibana报错[warning][admin][elasticsearch] Unable to revive connection: http://localhost:9200/
  9. jQuery ajax post put 请求
  10. python使用系统命令连接数据库_windows下命令行方式完成MySQL配置及Python连接数据库...
  11. Web版记账本开发记录(五)
  12. 【全套完结】模拟电子技术基础——全套实验手册及仿真工艺实习【建议保存】
  13. 华为HG8245C光猫破解用户连接数限制
  14. HTML动态分页函数
  15. linux查看文件夹大小命令
  16. SRPG游戏开发(五)第三章 绘制地图 - 二 绘制一张简单地图
  17. 用于风控模型的九种数据维度(常用的金融数据)
  18. 用c++做一个弹窗恶搞——类似病毒但没危害
  19. Android内存优化—Android的内存管理方式
  20. 【Pygame一行代码系列】程序员玩的这几款电脑游戏,你玩过吗?

热门文章

  1. 雅酷互动flash as2简易教程第3篇
  2. Vue父子组件间通信
  3. Win32 键盘事件 - 击键消息、字符消息、插入符号(光标)
  4. uniapp、Vue中 image 如何设置默认图片,图片地址加载失败(404)的话就显示默认图片
  5. 关公战秦琼手游java,黑崎一护VS犬夜叉谁更强?关公战秦琼的戏码要在这款手游中上演...
  6. G - 锘爷考驾照
  7. Windows10安装linux子系统
  8. Cents XAMPP/LAMP phpmyadmin Access Denied
  9. 解决Element type “web-app“ must be followed by either attribute specifications, “>“ or “/>“.报错问题
  10. X理论和Y理论(转载)