python Pandas合并(单元格、sheet、excel )
安装 Pandas 和 openpyxl
首先,确保已经安装了 Pandas 和 openpyxl。可以通过 pip 安装:
pip install pandas openpyxl
创建 DataFrame
-
import pandas as pd -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
df2 = pd.DataFrame({ -
'姓名': ['赵六', '孙七', '周八'], -
'年龄': [40, 45, 50], -
'城市': ['深圳', '成都', '杭州'] -
}) -
print(df1) -
print(df2)
使用 openpyxl 合并单元格
-
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
# 创建一个新的工作簿 -
wb = Workbook() -
ws = wb.active -
# 将 DataFrame 写入工作表 -
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
ws.cell(row=r_idx+1, column=c_idx, value=value) -
# 合并单元格 -
ws.merge_cells('A1:B1') # 合并 A1 和 B1 单元格 -
# 保存 Excel 文件 -
wb.save('merged_cells.xlsx')
合并 DataFrame 到不同的工作表
-
import pandas as pd -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
df2 = pd.DataFrame({ -
'姓名': ['赵六', '孙七', '周八'], -
'年龄': [40, 45, 50], -
'城市': ['深圳', '成都', '杭州'] -
}) -
# 合并 DataFrame 到不同的工作表 -
with pd.ExcelWriter('combined_sheets.xlsx', engine='openpyxl') as writer: -
df1.to_excel(writer, sheet_name='Sheet1', index=False) -
df2.to_excel(writer, sheet_name='Sheet2', index=False)
合并多个 Excel 文件
-
import pandas as pd -
# 读取多个 Excel 文件 -
files = ['file1.xlsx', 'file2.xlsx'] -
dfs = [] -
for file in files: -
dfs.append(pd.read_excel(file)) -
# 合并所有 DataFrame -
combined = pd.concat(dfs, ignore_index=True) -
# 保存合并后的数据 -
combined.to_excel('combined_files.xlsx', index=False) -
使用 openpyxl 合并单元格并保留数据 -
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
# 创建一个新的工作簿 -
wb = Workbook() -
ws = wb.active -
# 将 DataFrame 写入工作表 -
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
ws.cell(row=r_idx+1, column=c_idx, value=value) -
# 合并单元格但保留数据 -
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2) -
# 保存 Excel 文件 -
wb.save('merged_cells_with_data.xlsx')
合并多个 DataFrame 到不同工作表
-
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
df2 = pd.DataFrame({ -
'姓名': ['赵六', '孙七', '周八'], -
'年龄': [40, 45, 50], -
'城市': ['深圳', '成都', '杭州'] -
}) -
# 创建一个新的工作簿 -
wb = Workbook() -
# 添加不同的工作表 -
ws1 = wb.create_sheet(title='Sheet1') -
ws2 = wb.create_sheet(title='Sheet2') -
# 将 DataFrame 写入不同的工作表 -
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
ws1.cell(row=r_idx+1, column=c_idx, value=value) -
for r_idx, row in enumerate(dataframe_to_rows(df2, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
ws2.cell(row=r_idx+1, column=c_idx, value=value) -
# 保存 Excel 文件 -
wb.save('multiple_sheets.xlsx')
使用 openpyxl 合并单元格并设置样式
-
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
from openpyxl.styles import Font, Alignment -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
# 创建一个新的工作簿 -
wb = Workbook() -
ws = wb.active -
# 设置字体样式 -
font_style = Font(bold=True, color="FF0000") -
alignment = Alignment(horizontal="center", vertical="center") -
# 将 DataFrame 写入工作表 -
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
cell = ws.cell(row=r_idx+1, column=c_idx, value=value) -
if r_idx == 0: # 如果是标题行,则设置样式 -
cell.font = font_style -
cell.alignment = alignment -
# 合并单元格并设置样式 -
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2) -
ws['A1'].font = font_style -
ws['A1'].alignment = alignment -
# 保存 Excel 文件 -
wb.save('merged_cells_with_styles.xlsx')
合并多个 Excel 文件到一个工作簿的不同工作表
-
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
# 读取多个 Excel 文件 -
files = ['file1.xlsx', 'file2.xlsx'] -
dfs = [] -
for file in files: -
dfs.append(pd.read_excel(file)) -
# 创建一个新的工作簿 -
wb = Workbook() -
# 添加不同的工作表并将数据写入 -
for idx, df in enumerate(dfs): -
ws = wb.create_sheet(title=f'Sheet{idx+1}') -
for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
ws.cell(row=r_idx+1, column=c_idx, value=value) -
# 保存 Excel 文件 -
wb.save('combined_files_multiple_sheets.xlsx')
使用 openpyxl 合并单元格并设置条件格式
-
import pandas as pd -
from openpyxl import Workbook -
from openpyxl.utils.dataframe import dataframe_to_rows -
from openpyxl.styles import PatternFill, Font -
from openpyxl.formatting.rule import CellIsRule -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
# 创建一个新的工作簿 -
wb = Workbook() -
ws = wb.active -
# 设置字体样式 -
font_style = Font(bold=True, color="FF0000") -
fill_style = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid") -
# 将 DataFrame 写入工作表 -
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)): -
for c_idx, value in enumerate(row, 1): -
cell = ws.cell(row=r_idx+1, column=c_idx, value=value) -
if r_idx == 0: # 如果是标题行,则设置样式 -
cell.font = font_style -
# 合并单元格 -
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2) -
# 设置条件格式 -
rule = CellIsRule(operator='equal', formula=['"北京"'], stopIfTrue=True, fill=fill_style) -
ws.conditional_formatting.add('C1:C3', rule) -
# 保存 Excel 文件 -
wb.save('merged_cells_with_conditional_formatting.xlsx')
合并 DataFrame 并去除重复数据
-
import pandas as pd -
# 创建 DataFrame -
df1 = pd.DataFrame({ -
'姓名': ['张三', '李四', '王五'], -
'年龄': [25, 30, 35], -
'城市': ['北京', '上海', '广州'] -
}) -
df2 = pd.DataFrame({ -
'姓名': ['赵六', '孙七', '周八'], -
'年龄': [40, 45, 50], -
'城市': ['深圳', '成都', '杭州'] -
}) -
# 合并 DataFrame -
combined = pd.concat([df1, df2], ignore_index=True) -
# 去除重复数据 -
unique_combined = combined.drop_duplicates() -
# 保存合并后的数据 -
unique_combined.to_excel('unique_combined_files.xlsx', index=False)
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
相关文章:
python Pandas合并(单元格、sheet、excel )
安装 Pandas 和 openpyxl 首先,确保已经安装了 Pandas 和 openpyxl。可以通过 pip 安装: pip install pandas openpyxl 创建 DataFrame import pandas as pd # 创建 DataFrame df1 pd.DataFrame({ 姓名: [张三, 李四, 王五], 年龄: [25, 30, 35]…...
OJ在线编程常见输入输出练习【JavaScript】
(注:本文是对【JavaScript Node 】 ACM模式,常见输入输出练习相关内容的介绍!!!) 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 一、ACM模式下的编辑页面 二、ACM模式下&a…...
新能源汽车空调系统:绿色出行的舒适保障
在新能源汽车迅速发展的今天,空调系统作为提升驾乘舒适度的重要组成部分,发挥着不可或缺的作用。新能源汽车空调系统主要由压缩机、冷凝器、节流装置和蒸发器四大件组成,它们协同工作,为车内提供适宜的温度和湿度环境。 一、压缩…...
Date工具类详细汇总-Date日期相关方法
# 1024程序员节 | 征文 # 目录 简介 Date工具类单元测试 Date工具类 简介 本文章是个人总结实际工作中常用到的Date工具类,主要包含Java-jdk8以下版本的Date相关使用方法,可以方便的在工作中灵活的应用,在个人工作期间频繁使用这些时间的格…...
TMUX1308PWR规格书 数据手册 具有注入电流控制功能的 5V 双向 8:1单通道和 4:1 双通道多路复用器芯片
TMUX1308 和 TMUX1309 为通用互补金属氧化物半导体 (CMOS) 多路复用器 (MUX)。TMUX1308 是 8:1单通道(单端)多路复用器,而 TMUX1309 是 4:1 双通道(差分)多路复用器。这些器件可在源极 (Sx) 和漏极 (Dx) 引脚上支持从 …...
证件照怎么换底色?简单又快速!不看后悔
一、引言 证件照在我们的生活中有着广泛的应用,无论是求职、考试还是办理各种证件,都需要用到不同底色的证件照。传统的换底色方法往往比较复杂,需要一定的专业技能和软件操作经验。但是现在,有了更简单快捷的方法,让你…...
Rust 基础语法与常用特性
Rust 跨界:全面掌握跨平台应用开发 第一章:快速上手 Rust 1.2 基础语法与常用特性 1.2.1 数据类型与控制流 数据类型 Rust 提供了丰富的内置数据类型,主要分为标量类型和复合类型。 标量类型 标量类型表示单一的值,Rust 中…...
一、开发环境的搭建
环境搭建步骤: 下载软件安装软件运行软件 其他: Visual studio 安装包文件:https://www.alipan.com/s/nd5RgzD4e3b 下载软件 在浏览器中搜索Visual studio,选择如图的选项 点击该区域,进入该页面,【或…...
Docker:存储原理
Docker:存储原理 镜像联合文件系统overlay镜像存储结构容器存储结构 存储卷绑定挂载存储卷结构 镜像 联合文件系统 联合文件系统Union File System是一种分层,轻量且高效的文件系统。其将整个文件系统分为多个层,层与层之间进行覆盖&#x…...
ts:数组的常用方法(push、pop、shift、unshift、splice、slice)
前端css中filter的使用 一、主要内容说明二、例子(一)、push方法(尾添加)1.源码1 (push方法)2.源码1运行效果 (二)、pop方法(尾删除)1.源码2(pop方…...
物联网网关确保设备安全
物联网(IoT)网关在确保设备安全方面扮演着至关重要的角色。 作为连接物联网设备和云端或企业系统的中介,物联网网关可以实施多种安全措施来保护设备和数据。 是物联网网关确保设备安全的关键方法: 1. 设备认证和授权 认证&…...
Vue学习笔记(五)
Class绑定 数据绑定的一个常见需求场景式操纵元素的CSS class列表,因为class是attribute,我们可以和其他attribute一样使用v-bind将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的。因此…...
Nestjs返回格式小结
在 NestJS 中,除了 text/event-stream(用于 Server-Sent Events)之外,还有多种格式的返回方式,具体取决于你的应用需求。以下是一些常见的返回格式及其示例: 1. JSON 格式 Get(json) getJsonResponse(Res…...
【力扣刷题实战】相同的树
大家好,我是小卡皮巴拉 文章目录 目录 力扣题目: 相同的树 题目描述 示例 1: 示例 2: 示例 3: 解题思路 题目理解 算法选择 具体思路 解题要点 完整代码(C语言) 兄弟们共勉 &#…...
Golang | Leetcode Golang题解之第515题在每个树行中找最大值
题目: 题解: func largestValues(root *TreeNode) (ans []int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {maxVal : math.MinInt32tmp : qq nilfor _, node : range tmp {maxVal max(maxVal, node.Val)if node.Left ! nil {q …...
Zookeeper 对于 Kafka 的作用是什么?
大家好,我是锋哥。今天分享关于【Zookeeper 对于 Kafka 的作用是什么?】面试题?希望对大家有帮助; Zookeeper 对于 Kafka 的作用是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 在 Kafka…...
Thread类及线程的核心操作
一. Thread类的常见构造方法 1. Thread() Thread类无参的构造方法, 用于创建Thread类的实例对象. 2. Thread(String name) 带一个参数的Thread类构造方法, 创建一个线程对象, 并给其命名. [注]: 如果不专门给线程命名, 那么线程默认的名字就是Thread-0, Thread-1, Thread-…...
算法|牛客网华为机试11-20C++
牛客网华为机试 上篇:算法|牛客网华为机试1-10C 文章目录 HJ11 数字颠倒HJ12 字符串反转HJ13 句子逆序HJ14 字符串排序HJ15 求int型正整数在内存中存储时1的个数HJ16 购物单HJ17 坐标移动HJ18 识别有效的IP地址和掩码并进行分类统计HJ19 简单错误记录HJ20 密码验证…...
OpenAI低调发布多智能体工具Swarm:让多个智能体协同工作!
大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...
性能之光 年度电竞性能旗舰iQOO 13发布
2024年10月30日,被定义为“性能之光”的年度电竞性能旗舰——iQOO 13正式发布,售价3999元起。iQOO 13作为iQOO 品牌在性能上的又一次深入探索,它像是一束光,引领行业不断拉高性能上限,让用户看到更多的可能性。 iQOO …...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
