pandas追加sheet到已有sheet的excel文件会覆盖的问题

一、创建数据

import pandas as pd
import numpy as np

data1 = pd.DataFrame(np.arange(12).reshape((3, 4)))
print(data1)
data1.to_excel('123.xlsx', sheet_name='123')

输出:

   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

excel文件:

在这里插入图片描述

二、追加sheet

1、直接使用to_excel:
data2 = pd.DataFrame(np.random.randn(6, 6))
print(data2)
data2.to_excel('123.xlsx', sheet_name='234')

输出:

          0         1         2         3         4         5
0 -1.733698 -0.275682 -1.706241 -0.025365  1.341233  1.646947
1  0.869634  0.526175 -2.543201 -0.309278 -1.275674 -0.600460
2 -0.206907  0.308826 -0.692131 -1.167456 -1.766714  0.840579
3 -0.668781 -1.580144  0.601353 -0.424380 -1.199741 -1.141591
4 -1.368125  0.040602  1.173418 -0.001301 -1.783911  0.790756
5 -0.442426  0.250814 -0.515925  0.717436  0.211946  0.522879

excel:

在这里插入图片描述
可以看到,sheet"123"被覆盖,并没有满足我们的需求

2、使用ExcelWriter:
import pandas as pd
import numpy as np

writer = pd.ExcelWriter('123.xlxs')
data1 = pd.DataFrame(np.arange(12).reshape((3, 4)))
print(data1)
data1.to_excel(writer,  sheet_name='123')

data2 = pd.DataFrame(np.random.randn(6, 6))
print(data2)
data2.to_excel(writer, sheet_name='234')
writer.save()

excel:

在这里插入图片描述

可以看到两个数据加到了不同的sheet中。但是,当我们想再追加数据到新的sheet中时,sheet’123’sheet’234’就会被覆盖:

writer = pd.ExcelWriter('123.xlsx')
data3 = pd.DataFrame(np.random.randn(10, 5))
data3.to_excel(writer, sheet_name='345')
writer.save()

在这里插入图片描述
可以看到,sheet’123’sheet’234’被覆盖

3、究极选择openpyxl.load_workbook
from openpyxl import load_workbook
writer = pd.ExcelWriter('123.xlsx')
book = load_workbook('123.xlsx')
writer.book = book
data3 = pd.DataFrame(np.random.randn(10, 5))
data3.to_excel(writer, sheet_name='345')
writer.save()

excel:
在这里插入图片描述
可以看到,data3成功加到了sheet’345’中,并且没有覆盖前两个sheet

补充:

如果报错:AttributeError: ‘Workbook’ object has no attribute ‘add_worksheet’
修改第二行writer = pd.ExcelWriter(‘123.xlsx’, engine=‘openpyxl’)

  • 41
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
可以使用 `ExcelWriter` 对象来进行追加写入 sheet。具体的方法如下: 1. 使用 `pandas.read_excel()` 方法读取已有Excel 文件,同时设置 `sheet_name=None`,这样可以将所有的 sheet 读取为字典类型的数据结构。 ```python import pandas as pd # 读取已有Excel 文件 excel_file = pd.read_excel('example.xlsx', sheet_name=None) ``` 2. 创建一个新的 `ExcelWriter` 对象,并指定要写入的文件名。 ```python # 创建一个新的 ExcelWriter 对象 with pd.ExcelWriter('example.xlsx', mode='a') as writer: # 将已有sheet 写入到新文件中 for sheet_name, df in excel_file.items(): df.to_excel(writer, sheet_name=sheet_name, index=False) ``` 3. 使用 `pandas.DataFrame.to_excel()` 方法将新的数据写入到指定的 sheet 中。 ```python # 创建要写入的新数据 new_data = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) # 将新数据写入到指定的 sheet 中 new_data.to_excel(writer, sheet_name='Sheet3', index=False) ``` 完整的代码如下: ```python import pandas as pd # 读取已有Excel 文件 excel_file = pd.read_excel('example.xlsx', sheet_name=None) # 创建一个新的 ExcelWriter 对象 with pd.ExcelWriter('example.xlsx', mode='a') as writer: # 将已有sheet 写入到新文件中 for sheet_name, df in excel_file.items(): df.to_excel(writer, sheet_name=sheet_name, index=False) # 创建要写入的新数据 new_data = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) # 将新数据写入到指定的 sheet 中 new_data.to_excel(writer, sheet_name='Sheet3', index=False) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值