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

发布了100 篇原创文章 · 获赞 10 · 访问量 3393

猜你喜欢

转载自blog.csdn.net/qq_44315987/article/details/104100281