Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐

2023-10-26

Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐
# 以下代码默认已经导入 np,pd
import numpy as np
import pandas as pd

# 执行下面示例之前,最好先删除 ./test.xlsx 文件

覆盖所有原有数据,只保留最后一份数据:

# pandas:1.4.1  openpyxl:3.0.9
# 删除文件原有数据,只保留 s2 一份数据(最后一份)

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

s1.to_excel('test.xlsx', sheet_name="111", index=False)
s2.to_excel('test.xlsx', sheet_name="222", index=False)	# 只保留此份数据

覆盖所有原有数据,保留当前写入的多份数据:

# pandas:1.4.1  openpyxl:3.0.9
# 删除文件原有数据,同时保留s1 和s2 两份数据

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 保留两份数据
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

保留原有数据,新开一个sheet 写入数据

# pandas:1.4.1  openpyxl:3.0.9
# 保留原有数据 s1,新开一个sheet 写入数据 s2
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

# 先写入 s1 的数据(会新建excel文件)
s1.to_excel('test.xlsx', sheet_name='111', index=False)

book = load_workbook("test.xlsx")	# 该文件必须存在,并且该语句必须在 with pd.ExcelWriter() 之前
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    s2.to_excel(writer, sheet_name="222", index=False)	
    # 新增一个sheet 并写入,如果这里这里指定的sheet已经存在,那么会在该名称后追加1,2,3,... 创建一个新的sheet写入,不会在原有sheet上修改

重写指定sheet数据,保留原有的其余sheet数据

# pandas:1.4.1  openpyxl:3.0.9
# 重写指定sheet数据,保留原有的其余sheet数据
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
s3 = pd.DataFrame(np.array([['s3', 's3', 's3', 's3']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {i.title: i for i in book.worksheets}	# 指定sheet
    s3.to_excel(writer, sheet_name="111", index=False)

修改指定sheet内的部分数据,其余保持不变

# pandas:1.4.1  openpyxl:3.0.9
# 修改指定sheet内的部分数据,其余保持不变
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)
    
book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    sheet = book['222']	# 通过sheet名称 获取 sheet
    sheet.cell(2, 1, 'hello')	# 修改第二行第一列的值
    sheet['b2'] = '你好'	# 修改 b2 单元格的值

向 sheet 中追加数据

1.在Excel 中追加

# pandas:1.4.1  openpyxl:3.0.9
# 向sheet中追加数据(一),在Excel 中追加
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
# s4 只有3列,并且列顺序被打乱,以模拟新数据与元数据的差异
s4 = pd.DataFrame(np.array([['s4b', 's4d', 's4c']]), columns=['b', 'd', 'c'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

df = pd.read_excel('test.xlsx', sheet_name='111')
row = df.shape[0]	# 获取原数据的行数
# 将 新数据 格式化成原数据的模样,以解决数据列之间的差异
s4 = pd.concat([pd.DataFrame(columns=df.columns), s4], ignore_index=True)

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {sheet.title: sheet for sheet in book.worksheets}
    # 追加新数据,追加前必须先格式化新数据,否则新数据缺少列,或是列顺序不对会导致数据紊乱
    s4.to_excel(writer, sheet_name='111', startrow=row + 1, index=False, header=False)

向sheet中追加数据

2.在pandas中追加数据后,重写指定sheet

# pandas:1.4.1  openpyxl:3.0.9
# 向sheet中追加数据(二),在pandas中追加数据后,重写指定sheet
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
# s4 只有3列,并且列顺序被打乱,以模拟新数据与元数据的差异
s4 = pd.DataFrame(np.array([['s4b', 's4d', 's4c']]), columns=['b', 'd', 'c'])

with pd.ExcelWriter("test.xlsx") as writer:
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

df = pd.read_excel('test.xlsx', sheet_name='111')
df = pd.concat([df, s4], ignore_index=True)	# 合并数据

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {sheet.title: sheet for sheet in book.worksheets}
    df.to_excel(writer, sheet_name='111', index=False)	# 重写sheet

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐 的相关文章

  • 如何在mongoengine中通过oid搜索文档

    我需要通过 oid 从 db 获取文档 例如 Docs objects id 4f4381f4e779897a2c000009 但如何做到这一点 如果 id 需要 ObjectId 对象 即使我尝试从 pymongo 设置 ObjectId
  • 球体表面上测地线(最短距离路径)之间的交点

    我进行了广泛的搜索 但尚未找到该问题的合适答案 给定球体上的两条线 每条线由起点和终点定义 确定它们是否相交以及相交的位置 我找到了这个网站 http mathforum org library drmath view 62205 html
  • 使用 python 字符串格式插入制表符

    我正在尝试使用 format 形成一个字符串 但无法弄清楚这一点 lems scaena persona improbus for i in lems print format i t whatever 但拉环并没有像我想象的那样拉紧 实际
  • 根据 pandas 中另一列的值创建新列

    我有这个 pandas 数据框 其 代码 列包含顺序分层代码 我的目标是使用每个层次级别代码及其名称创建新列 如下所示 原始数据 Code Name 0 A USA 1 AM Massachusetts 2 AMB Boston 3 AMS
  • 平均日期数组计算

    我想得到以下日期的平均值 我考虑过将所有数据转换为秒 然后对它们进行平均 但可能有更好的方法来做到这一点 date 2016 02 23 09 36 26 2016 02 24 10 00 32 2016 02 24 11 28 22 20
  • 限制多处理python中的进程数量

    我的要求是生成hundreds of HTTP POST requests per second 我正在使用它urllib2 def send req urllib2 Request url req add data data respon
  • 模块“tensorflow._api.v2.train”没有属性“GradientDescentOptimizer”

    我使用Python 3 7 3并安装了tensorflow 2 0 0 alpha0 但是存在一些问题 例如 模块 tensorflow api v2 train 没有属性 GradientDescentOptimizer 这是我的全部代码
  • Scorer函数:make_scorer/score_func和的区别

    在 scikit 0 18 1 文档中 我发现接下来的内容有点令人困惑 似乎可以通过多种方式编写自己的评分函数 但有什么区别呢 网格搜索简历 http scikit learn org stable modules generated sk
  • 解析维基百科的出生和死亡日期?

    我正在尝试编写一个 python 程序 可以在维基百科中搜索人们的出生和死亡日期 例如 阿尔伯特 爱因斯坦出生于 1879 年 3 月 14 日 逝世日期 1955 年 4 月 18 日 我开始于使用 Python 获取维基百科文章 htt
  • pyaudio 可以同时演奏两个音符吗?

    可以使用 pyaudio 演奏和弦吗 当然 只需生成结果并将其传递给玩家即可 本文介绍了一种实现此目的的方法 http davywybiral blogspot com br 2010 09 procedural music with py
  • 如何在 Python Qt 应用程序中使用 KDE Okular 的文档视图小部件?

    我正在 Linux 上使用 Qt 4 8 和 PyQt 用 Python 3 4 编写桌面应用程序 有没有办法将 Okular 的 pdf 查看功能作为小部件使用 导入 如果是 怎么办 这对我有用 import sys from PyKDE
  • Excel 单元格在双击之前不会计算

    我有一个包含三个求和函数的 Excel 工作表 该工作表是一个模板 因此除了 A 列中的一些文本描述外 工作表的其余部分是空白的 我使用 ETL 流程 Talend Open Studio 打开工作表 输入一些数据 附加几个其他工作表 并将
  • 如何根据第一列的内容分割一个巨大的csv文件?

    我有一个 250MB 以上的巨大 csv 文件要上传 文件格式是group id application id reading数据可能看起来像 1 a1 0 1 1 a1 0 2 1 a1 0 4 1 a1 0 3 1 a1 0 0 1 a
  • Tensorflow - 保存模型

    我有以下代码 在尝试保存模型时出现错误 我可能做错了什么 我该如何解决这个问题 import tensorflow as tf data labels cifar tools read data C Users abc Desktop Te
  • Osmnx python graph_to_gdfs 有时会在名称列中返回一个列表,是什么原因造成的?

    我正在使用 OSmnx 创建一些漂亮的地图 其中我根据街道名称为街道着色 灵感来自 puntofisso 例如 如果是街道 则需要是红色 车道是绿色等 我注意到有时边的名称不是字符串 而是列表 到目前为止我已经解决了这个问题 但是有一个论点
  • 在 Excel 中声明 PtrSafe 兼容性

    我在VBA中使用这个语句 Private Declare PtrSafe Function GetTimeZoneInformationAny Lib kernel32 Alias GetTimeZoneInformation buffer
  • 检查字典是否有多个键

    如何检查字典 实际上是类似字典的对象 是否具有给定集合的所有内容keys 复数 到目前为止 我已经使用过 d a 1 b 2 c 3 keys a b def has keys d keys for key in keys if not k
  • Python - 绘制具有不均匀误差(高和低)的误差条形图[重复]

    这个问题在这里已经有答案了 我是 Stack Overflow 的新手 所以如果这是一个重复的问题或含糊不清 我深表歉意 我对 Python 和一般编码也是新手 我想创建一个误差条形图 该图在高点和低点上具有不相等的 错误限制 我将绘制一个
  • 如何在 numpy 数组中绘制线条?

    我希望能够将线条绘制到 numpy 数组中 以获得用于在线手写识别的离线功能 这意味着我根本不需要图像 但我需要 numpy 数组中的某些位置 给定大小的图像看起来像这些位置 我希望能够指定图像大小 然后绘制如下笔画 import modu
  • 将 UTF-16 转换为 UTF-8 并删除 BOM?

    我们有一位数据输入人员在 Windows 上使用 UTF 16 编码 希望使用 utf 8 并删除 BOM utf 8 转换有效 但 BOM 仍然存在 我该如何删除这个 这就是我目前所拥有的 batch 3 src Users jt src

随机推荐

  • 用Construct2开发一个小游戏(进阶)

    策划并用Construct2开发一个小游戏 进阶 游戏策划 楔子 Setting 公元2500年 与地球建交长达200之久的达克星球 Dark Star 单方面撕毁友好合约 对地球发起了进攻 面对源源不断的独眼怪大军 你踏入自己发明的 洋芋
  • MATLAB——读取多文件夹内文件并绘制图形(1)——逐行读取txt文件内字符串

    目录 1 添加路径 2 准备好图片名称和路径名称 3 读取txt文件中的字符串 1 添加路径 如果m文件和要读取的文件不在同一个路径下 需要借助下方代码将当前文件夹下的所有文件都包含进搜索路径中 addpath genpath F SaCo
  • Swin-Transformer

    原视频链接 https www bilibili com video BV1pL4y1v7jC spm id from 333 788 vd source f04f16dd6fd058b8328c67a3e064abd5 参考博文 2021
  • 哈夫曼编码设计(C)

    文章目录 前言 哈夫曼编码设计 总结 前言 大二 刚刚开始学数据结构与算法 写得不好 哈夫曼编码设计 现要求输入8个字符 a b c d e f g h 对应的权值 大于0的整数 然后设计哈夫曼编码实现输入对应8个字符组成的一串字符 字符串
  • centos 网络连接设置

    这里使用虚拟机 VirtualBox 来安装CentOS 6 3 32bit服务器版本 没有安装桌面 作为演示 所以全是命令操作 如何安装CentOS操作系统就不用我说的 虚拟机网络设置为桥接模式 Bridge 单独分配ip 不共享主机ip
  • 致命错误:Rdefines.h:没有那个文件或目录

    致命错误 Rdefines h 没有那个文件或目录 Rdefines h No such file or directory 关键词 CentOS 7 安装rpy2 pip3 install rpy2报错 python3 setup py
  • C#——字符串

    System String类 1 创建字符串 string s abcdefg 2 获取字符串长度 s Length 3 比较字符串是否一样 s abcd 4 字符串连接 s http s 5 使用类似索引器的语法来取得字符串中的某个字符
  • Android常见漏洞

    Android常见漏洞 漏洞名称 Log敏感信息泄露 漏洞描述 程序运行期间打印了用户的敏感信息 造成泄露 修改建议 建议禁止隐私信息的log 漏洞名称 web https校验错误忽略漏洞 漏洞描述 漏洞可导致中间人攻击 修改建议 建议不要
  • JAVA基础练习题

    1 生成两个1 10的随机数 分别作为两个数组的长度 2 向第一个数组中以循环键盘录入的方式添加元素 3 生成1 100之间的随机数 为第二个数组的每个元素赋值 4 将两个数组合并 为一个新的数组 5 去掉新数组的最大值和最小值 求平均值
  • vue之--使用TypeScript

    搭配 TypeScript 使用 Vue 像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误 这减少了生产环境中的运行时错误 也让我们在重构大型项目的时候更有信心 通过 IDE 中基于类型的自动补全 Type
  • C++ 好用的日志库--spdlog

    背景 spdlog 是一个快速 异步的 header only 的 C 日志库 它提供了简单易用的 API 并具有高性能和可扩展性 下载和使用 下载 spdlog 库下载地址 github 链接 hello world 在使用时只需要 in
  • 设计模式:模板方法模式

    定义一个操作中算法的框架 而将一些步骤延迟到子类中 使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 类图如下 事实上 模版方法是编程中一个经常用到的模式 先来看一个例子 某日 程序员A拿到一个任务 给定一个整数数组 把数组中的
  • 常用的函数式接口

    1 Supplier接口 仅包含一个无参的方法 T get 用来获取一个泛型参数指定类型的数据 2 Consumer接口 包含抽象方法 void accept T t 正好与Supplier相反 它不是生产一个数据 而是 消费一个数据 其数
  • web安全--环境搭建

    1 搭建环境 下载owasp靶机测试环境 login root password owaspbwa 下载kali linux攻击机也可以使用windows作为攻击机 我的是2020 login kaili password kali 其他版
  • typescript学习(二)——函数

    一 函数的定义 1 函数声明法 规定返回值必须为string类型 function run string return im string 2 匿名函数法 let run function string return im string 没
  • uniapp实现下拉加载更多 u-loadmore

    区别于官网教程 这里总结更为白话 要实现的需求是 比如起初有十条数据 下拉至底部 追加某数量的数据 比如我的项目中 我把它放在了数据展示的底部 上代码
  • 微信支付踩坑记-签名错误,请检查后再试

    注册商户号 使用微信支付功能 直接无脑设置v3密钥 然后配合wxjava这个包进行开发 结果试了很多遍 都报错 最后才发现 我一直使用的v2验证方式 之前都没有设置过v2密钥 最后把v2密钥设置成和v3一样 重新试了一下 解决问题 最后附上
  • Python3学习(六):函数

    Python3 函数 函数是组织好的 可重复使用的 用来实现单一 或相关联功能的代码段 函数能提高应用的模块性 和代码的重复利用率 你已经知道Python提供了许多内建函数 比如print 但你也可以自己创建函数 这被叫做用户自定义函数 可
  • 广度优先算法

    deque 即双端队列 是一种具有队列和栈的性质的数据结构 双端队列中的元素可以从两端弹出 其限定插入和删除操作在表的两端进行 最短路径问题的算法被称为广度优先搜索 广度优先搜索是一种用于图的查找算法 第一类问题 从节点A出发 有前往节点B
  • Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐

    Pandas 写入 Excel 的几种情形与方式 覆盖 新增 追加 对齐 以下代码默认已经导入 np pd import numpy as np import pandas as pd 执行下面示例之前 最好先删除 test xlsx 文件