下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第解决Pandas生成Excel时的sheet问题的方法总结目录楔子同时导入多个sheet覆盖一个sheet
楔子
估计有不少小伙伴在将DataFrame导入到Excel的时候,都遇到过下面这种尴尬的情况:
想将多个DataFrame导入到一个Excel文件的多个sheet中,但是却发现生成的Excel文件里面只有最后一个sheet;想给一个现有的Excel文件追加一个sheet,结果发现其它的sheet都没了,只剩下新追加的sheet;
那么下面就来看看如何解决这些问题。
同时导入多个sheet
如果想导入多个sheet,那么肯定不能使用原来to_excel(文件名)的方式,那样只会保留最后一个sheet。我们应该使用类ExcelWriter实现:
import
pandas
as
pd
df1
=
pd.DataFrame({"a":
[1,
2],
"b":
[3,
4]})
df2
=
pd.DataFrame({"a":
[2,
3],
"b":
[4,
5]})
df3
=
pd.DataFrame({"a":
[3,
4],
"b":
[5,
6]})
#
调用pd.ExcelWriter,
需要指定mode="a",
engine="openpyxl"
#
注意:
将mode设置为"a"表示追加,
但是它要求文件必须存在,
否则报错
writer
=
pd.ExcelWriter("test.xlsx",
mode="a",
engine="openpyxl")
#
因此我们需要生成这个文件,此时顺便将第一个
DataFrame
导进去
df1.to_excel("test.xlsx",
index=False,
sheet_name="a")
#
然后再实例化ExcelWriter
writer
=
pd.ExcelWriter("test.xlsx",
mode="a",
engine="openpyxl")
#
接下来还是调用to_excel,
但是第一个参数不再是文件名,
而是上面的writer
#
将剩下的两个DataFrame写进去
df2.to_excel(writer,
index=False,
sheet_name="b")
df3.to_excel(writer,
index=False,
sheet_name="c")
#
保存并关闭writer,
写入磁盘
writer.save()
writer.close()
执行代码,然后打开文件看一下。
此时我们看到结果是没有问题的,当然向已存在的Excel文件追加sheet也是同理。
覆盖一个sheet
向Excel文件同时写入多个sheet,以及追加sheet,我们已经知道该怎么做了,然后是覆盖sheet。首先我们覆盖sheet的时候还要保证其它sheet不受影响,所以mode仍然要设置为追加模式。
下面问题来了,我们上面的Excel文件有a、b、c三个sheet,假设我们想将b这个sheet覆盖掉,应该怎么做呢?可能有人认为,在追加的时候还指定sheet_name=b不就行了,然鹅答案是不行的。
我们看到如果已有同名sheet,那么不会覆盖,还是创建一个新的sheet,并自动在结尾处加一个1。如果我们在此基础上再写入b这个sheet的话,那么又会多出一个名为b2的sheet。所以最好的办法是,在导入之前先将sheet删除。
import
pandas
as
pd
writer
=
pd.ExcelWriter("test.xlsx",
mode="a",
engine="openpyxl")
wb
=
writer.book
#
pandas操作Excel底层也是依赖于其它的模块,
比如xlrd、openpyxl
#
所以这里的
wb
=
writer.book
就相当于
from
openpyxl
import
load_workbook
wb
=
load_workbook("test.xlsx")
#
查看已存在的所有的sheet,
总共是5个
#
其中
"b1"和"b2"
是自动创建的
print(wb.sheetnames)
#
['a',
'b',
'c',
'b1',
'b2']
#
下面我们来删除sheet
wb.remove(wb["b1"])
wb.remove(wb["b2"])
wb.remove(wb["b"])
df
=
pd.DataFrame({"name":
["古明地觉",
"古明地恋"]})
#
我们将
b
这个
sheet
给删除了
#
所以再导入
"b"
的时候就不会出现
"b3"
了
#
当然
"b1"
和
"b2"
也顺便被我们给删掉了
df.to_excel(writer,
index=True,
sheet_name="b")
writer.save()
writer.close()
我们看到b1、b2两个sheet就没了,当然我们删除的还有b这个sheet,只不过又重新创建了,当然数据也是我们创建的新数据。
另外可能有人发现多个sheet的顺序不再是原来的a、b、c,这是因为在删除b之后,a和c就靠在一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 伊克昭盟达拉特旗2025-2026学年第二学期六年级语文第四单元测试卷(部编版含答案)
- 茂名市茂港区2025-2026学年第二学期四年级语文第五单元测试卷(部编版含答案)
- 永州市祁阳县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 毕节地区金沙县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 德阳市中江县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 服装公司营销策划方案
- 深度解析(2026)《AQ 5203-2008电镀生产装置安全技术条件》
- 代数考试陷阱题及答案
- 《高考快车道》专题1 信息类文本阅读(课后习题)(学生版)(有答案)高三 二轮专题复习讲义 语文
- 市场调研与预测专业知识与实践技能试题及答案
- 2026年电子信息工程专业信号与系统真题单套试卷
- DB36T+2220-2026饮用水水源蓝藻水华应急防控技术指南
- 2026年员工体检组织计划
- 5.1 人民代表大会制度 课件(内嵌视频)-2025-2026学年统编版道德与法治八年级下册
- 2026江西省江盐集团盐品事业部招聘24人笔试参考题库及答案解析
- 2026年危险废物经营许可证管理办法题库及答案
- 安全管理人员考勤制度
- 运维技术人员考核制度
- 起重安全生产管理制度
- (完整版)泵站工程监理实施细则
- 模具钳工技能培训
评论
0/150
提交评论