惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Troy Hunt's Blog
T
The Exploit Database - CXSecurity.com
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
F
Fortinet All Blogs
博客园_首页
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
The Cloudflare Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Heimdal Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Security Affairs
The Register - Security
The Register - Security
S
Security @ Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
Schneier on Security
Schneier on Security
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
T
Tailwind CSS Blog
Hacker News: Ask HN
Hacker News: Ask HN
W
WeLiveSecurity
D
Docker
L
LangChain Blog
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
The Hacker News
The Hacker News
AWS News Blog
AWS News Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
宝玉的分享
宝玉的分享
I
Intezer
云风的 BLOG
云风的 BLOG
V2EX - 技术
V2EX - 技术
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 尘梦

calude code 2.188 根据cli.map还原 centos6 安装gcc 多版本 自定义编译bulma 神通mysql模式转 mysql ai数学书籍 chromedriver 网络安全渗透测试写法 编译php需要的扩展 vue table 表格记录选中 linux wktohtmlpdf 结合/tmp路径 无法创建问题 c语言开发 php扩展 sm4 macos php 如何链接神通数据库aci layui table tr a标签倒计时 操作 刷新以后继续倒计时 使用c# 开发 php的com组件 世界级地图数据处理 及 联动效果 php 结合pcntl_fork导出excel数据 使用 python 部署chatglm2b macos 下连接php 人大金仓pdo_kdb问题 php curl 多次发送
python 合并同列数据 组合 新的excel
尘梦 · 2024-10-21 · via 博客园 - 尘梦

import pandas as pd
from openpyxl import load_workbook

# 读取Excel文件
file_path = 'test.xlsx'  # 替换为你的Excel文件路径
df = pd.read_excel(file_path)

# 显示读取的数据
print(df)

# 打开工作簿
wb = load_workbook(file_path)
ws = wb.active  # 获取活动工作表

# 假设我们要合并的列是第1列(A列),从第二行开始(假设第一行为标题)
start_row = 2
last_row = ws.max_row

# 用于存储上一个唯一值以检测变化
previous_value = None
merge_start_row = None

# 遍历每一行
for row in range(start_row, last_row + 1):
    current_value = ws[f'A{row}'].value  # 第一列的值
    
    # 检测当前值与上一个值
    if current_value == previous_value:
        # 如果值相同,继续合并
        continue
    else:
        # 如果发现新的值,合并之前的单元格(如果有)
        if merge_start_row is not None and row - merge_start_row > 1:
            # 根据合并的行数分别合并其他列
            for col in range(2, 8):  # 从第2列到最后一列
                ws.merge_cells(start_row=merge_start_row, start_column=col, end_row=row - 1, end_column=col)
        
        # 更新为新值
        previous_value = current_value
        merge_start_row = row

# 最后合并最后一组相同的值(如果有)
if merge_start_row is not None and last_row - merge_start_row > 0:
    for col in range(2, 8):
        ws.merge_cells(start_row=merge_start_row, start_column=col, end_row=last_row, end_column=col)

# 保存合并后的文件
wb.save('merged_cells.xlsx')  # 可以另存为新文件