news 2026/7/4 7:20:54

Python openpyxl 如何删除行和列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python openpyxl 如何删除行和列

在数据处理和分析中,Excel 文件是不可或缺的一部分。Python 的 openpyxl 库提供了强大的功能来操作 Excel 文件,包括读取、写入、修改和格式化数据。然而,很多初学者在使用 openpyxl 时会遇到一个常见的问题:如何删除 Excel 文件中的行和列?本文将详细介绍 openpyxl 中删除行和列的方法,并通过具体的代码示例帮助你轻松掌握这一技能。

为什么需要删除行和列?
在实际工作中,我们经常需要对 Excel 文件进行数据清洗。例如,去除多余的空行、删除不需要的列或者清理错误的数据。这些操作不仅能够提高数据的质量,还能提升后续分析的效率。因此,学会如何在 openpyxl 中删除行和列是非常重要的。

安装 openpyxl
如果你还没有安装 openpyxl,可以使用以下命令进行安装:

pip install openpyxl
运行项目并下载源码
bash

删除行
基本方法
openpyxl 提供了 delete_rows 方法来删除指定的行。该方法的基本语法如下:

worksheet.delete_rows(idx, amount=None)
运行项目并下载源码
python
运行

idx:要删除的行号。
amount:可选参数,表示要删除的行数。如果不指定,默认只删除一行。
示例 1:删除单行
假设我们有一个 Excel 文件 example.xlsx,其中包含以下数据:

A B C
1 2 3
4 5 6
7 8 9
我们想要删除第 2 行(即索引为 2 的行),可以使用以下代码:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('example.xlsx')
ws = wb.active

# 删除第 2 行
ws.delete_rows(2)

# 保存工作簿
wb.save('example_deleted_row.xlsx')
运行项目并下载源码
python
运行


执行上述代码后,example_deleted_row.xlsx 文件的内容将变为:

A B C
1 2 3
7 8 9
示例 2:删除多行
如果需要删除多行,可以通过指定 amount 参数来实现。例如,删除从第 2 行开始的 2 行:

# 删除从第 2 行开始的 2 行
ws.delete_rows(2, 2)

# 保存工作簿
wb.save('example_deleted_multiple_rows.xlsx')
运行项目并下载源码
python
运行

执行上述代码后,example_deleted_multiple_rows.xlsx 文件的内容将变为:

A B C
1 2 3
动态删除行
在实际应用中,我们可能需要根据某些条件动态删除行。例如,删除所有值为 0 的行。可以使用以下代码实现:

# 遍历所有行,删除值为 0 的行
for row in list(ws.iter_rows(min_row=1, max_row=ws.max_row)):
if all(cell.value == 0 for cell in row):
ws.delete_rows(row[0].row)

# 保存工作簿
wb.save('example_deleted_zero_rows.xlsx')
运行项目并下载源码
python
运行

删除列
基本方法
openpyxl 提供了 delete_cols 方法来删除指定的列。该方法的基本语法如下:

worksheet.delete_cols(idx, amount=None)
运行项目并下载源码
python
运行

idx:要删除的列号。
amount:可选参数,表示要删除的列数。如果不指定,默认只删除一列。
示例 1:删除单列
假设我们有一个 Excel 文件 example.xlsx,其中包含以下数据:

A B C
1 2 3
4 5 6
7 8 9
我们想要删除第 2 列(即索引为 2 的列),可以使用以下代码:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('example.xlsx')
ws = wb.active

# 删除第 2 列
ws.delete_cols(2)

# 保存工作簿
wb.save('example_deleted_column.xlsx')
运行项目并下载源码
python
运行


执行上述代码后,example_deleted_column.xlsx 文件的内容将变为:

A C
1 3
4 6
7 9
示例 2:删除多列
如果需要删除多列,可以通过指定 amount 参数来实现。例如,删除从第 2 列开始的 2 列:

# 删除从第 2 列开始的 2 列
ws.delete_cols(2, 2)

# 保存工作簿
wb.save('example_deleted_multiple_columns.xlsx')
运行项目并下载源码
python
运行

执行上述代码后,example_deleted_multiple_columns.xlsx 文件的内容将变为:

A
1
4
7
动态删除列
在实际应用中,我们可能需要根据某些条件动态删除列。例如,删除所有值为 0 的列。可以使用以下代码实现:

# 遍历所有列,删除值为 0 的列
for col in reversed(list(ws.iter_cols(min_col=1, max_col=ws.max_column))):
if all(cell.value == 0 for cell in col):
ws.delete_cols(col[0].column)

# 保存工作簿
wb.save('example_deleted_zero_columns.xlsx')
运行项目并下载源码
python
运行

注意事项
行和列的索引:openpyxl 中的行和列索引是从 1 开始的,而不是从 0 开始。
删除顺序:在动态删除行或列时,建议从后向前删除,以避免索引变化导致的问题。
性能考虑:对于大型文件,频繁的删除操作可能会导致性能下降。建议在必要时批量处理。
扩展阅读
openpyxl 官方文档
Python 数据分析基础教程:CDA 数据分析师提供的课程,涵盖了 Python 数据分析的基础知识和实战技巧,适合初学者和进阶者学习。
通过本文的学习,你应该已经掌握了如何使用 openpyxl 删除 Excel 文件中的行和列。希望这些方法能帮助你在数据处理和分析中更加高效。如果有任何问题或建议,欢迎在评论区留言交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 7:23:55

Kimi LeetCode 3425. 最长特殊路径 Python3实现

以下是 LeetCode 3425. 最长特殊路径 的 Python3 实现。 --- 解题思路 这道题的核心是 DFS 滑动窗口(树上的双指针),时间复杂度 O(n),空间复杂度 O(n)。 关键观察 1. 特殊路径的定义:路径上所有节点的值互不相同…

作者头像 李华
网站建设 2026/7/5 3:08:08

北方高寒矿区专网通信搭建要点,适配低温、粉尘、防爆严苛工况

北方工矿矿区常年低温严寒、风沙粉尘大、作业环境复杂,井下开采、露天采掘、物料转运、设备检修、应急值守等工作24小时不间断开展。矿区属于高危作业场景,对通信设备的防爆、防寒、防尘、抗干扰性能要求极高,普通民用对讲设备无法适配矿区严…

作者头像 李华
网站建设 2026/7/4 6:06:22

别再只会Ctrl+Alt+T了!VMware Workstation 17 Pro里这5个隐藏指令,效率翻倍

VMware Workstation 17 Pro高阶指令指南:解锁专业用户的效率密码在虚拟化技术的日常使用中,大多数用户停留在图形界面的基础操作层面,却不知道命令行工具中隐藏着能大幅提升工作效率的宝藏指令。对于每天需要管理多个虚拟机的开发者和运维人员…

作者头像 李华
网站建设 2026/7/4 7:20:53

第十三篇:工业边缘与汽车数据空间——“能力出园”的智能制造

车间胶囊与供应链联邦——DISC架构在机器轰鸣中的深度落地 一、工厂的“双重恐惧” 一家高端精密制造工厂,五轴CNC机床正在加工航空发动机叶片。主轴转速每分钟四万转,刀具与钛合金接触瞬间温度骤升到八百度。每秒钟,数十个传感器——振动、…

作者头像 李华
网站建设 2026/7/4 2:08:10

Platinum-MD:如何让20年前的MiniDisc设备在现代电脑上重获新生?

Platinum-MD:如何让20年前的MiniDisc设备在现代电脑上重获新生? 【免费下载链接】platinum-md Minidisc NetMD Conversion and Upload 项目地址: https://gitcode.com/gh_mirrors/pl/platinum-md 您是否有一台尘封已久的MiniDisc播放器&#xff0…

作者头像 李华