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 …...
从‘一片蓝’到‘五彩斑斓’:手把手教你美化Matlab三维柱状图,让论文图表脱颖而出
从‘一片蓝’到‘五彩斑斓’:科研级Matlab三维柱状图视觉优化全攻略 当审稿人翻开一篇论文时,图表往往是他们最先注意到的元素。我曾参与过多次学术期刊的评审工作,那些配色考究、细节精致的图表总能在第一时间抓住眼球——这不仅仅是审美问题…...
基于Hetzner GPU云服务器与Ollama部署私有AI编程助手实战指南
1. 项目概述与核心价值最近在折腾一个事儿:把我自己用的AI编程助手,从本地电脑搬到云服务器上去。这事儿听起来有点技术含量,但其实核心逻辑很简单——本地电脑的显卡(尤其是消费级的)跑大模型,要么慢&…...
从泊松比到广义胡克定律:物理仿真中的材料形变建模指南
1. 泊松比:材料形变的"性格密码" 第一次接触泊松比这个概念时,我正对着橡胶减震器的仿真结果发愁——明明设置了正确的杨氏模量,为什么变形效果总是不对劲?直到导师指着屏幕问:"你考虑过这个橡胶材料的…...
告别离线语音包:用Google Cloud Text-to-Speech API为你的App注入更自然的人声(附Android集成代码)
云端语音合成技术实战:为移动应用注入自然语音的完整方案 在移动应用开发中,语音合成(TTS)技术正成为提升用户体验的关键要素。传统离线语音引擎往往面临发音生硬、语调单一和语种支持有限的问题,而现代云端语音合成API则提供了接近真人、富有…...
技术深度解析:5大核心要点掌握Sunshine开源游戏串流服务器实战部署
技术深度解析:5大核心要点掌握Sunshine开源游戏串流服务器实战部署 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管开源游戏串流服务器…...
【实战指南】从零掌握关联规则:Apriori算法核心解析与Python商业场景应用
1. 关联规则挖掘的商业价值与核心概念 想象一下这个场景:周末你去超市采购,推着购物车在货架间穿梭时,发现尿布和啤酒竟然摆在相邻位置。这不是超市经理的恶作剧,而是关联规则挖掘的经典案例——通过分析购物篮数据,发…...
利用Taotoken的多模型能力为AIGC应用构建弹性后备方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken的多模型能力为AIGC应用构建弹性后备方案 对于开发图像生成、文案创作等AIGC应用的团队而言,服务连续性至…...
ISO14443协议扫盲:别再只盯着‘读卡号’,APDU才是智能卡应用的灵魂
ISO14443协议进阶指南:从读卡号到APDU指令深度解析 当你第一次把卡片贴近读卡器,看到屏幕上跳出那串UID号码时,那种成就感确实令人兴奋。但很快你会发现,这串数字就像一扇紧闭的大门——你知道门后藏着更多可能性,却找…...
ESP32开发踩坑记:从HID库缺失到PlatformIO环境搭建的全流程复盘
ESP32开发踩坑记:从HID库缺失到PlatformIO环境搭建的全流程复盘 那天深夜,我盯着屏幕上"hid.h: No such file or directory"的报错信息,意识到自己掉进了嵌入式开发的第一个坑。原本想用Arduino做个体感鼠标来提升游戏体验…...
Carla 启动卡在75%并报“Fatal error”:从崩溃日志到资源缺失的排查实录
1. 当Carla卡在75%:从崩溃现象到问题定位 那天我正在Windows环境下调试Carla仿真平台,编译过程一切顺利,但执行make launch命令后,进度条就像被施了定身咒——永远停在了75%的位置。紧接着弹出的"Fatal error"对话框让我…...
