使用Pandas读取Excel并标记含删除线的行
用Pandas读取Excel并标记含删除线单元格的行
核心思路
Pandas本身无法直接读取单元格格式(比如删除线),所以需要结合openpyxl提取格式信息,再将标记结果合并到Pandas的DataFrame中——既保留Pandas处理列的便利性,又能实现标记需求。
具体实现步骤
- 用
openpyxl加载Excel文件,遍历每行检查是否存在带删除线的单元格,记录行号 - 用
pandas读取Excel数据生成DataFrame - 给DataFrame添加标记列,根据第一步的结果标记对应行
代码示例
import openpyxl import pandas as pd # 1. 用openpyxl检测带删除线的行 wb = openpyxl.load_workbook("your_excel_file.xlsx") ws = wb.active # 处理第一个工作表,指定表名可改为wb["目标表名"] # 记录需标记的行号(openpyxl行号从1开始,Pandas索引从0开始) strikethrough_row_nums = set() # 假设第一行是表头,从第二行开始检查数据行 for row in ws.iter_rows(min_row=2): current_row = row[0].row for cell in row: if cell.font.strike is True: strikethrough_row_nums.add(current_row) break # 只要有一个单元格带删除线,就标记该行,无需继续检查 # 2. 用Pandas读取Excel数据 df = pd.read_excel("your_excel_file.xlsx") # 3. 添加标记列:转换行号对应关系 df["has_strikethrough"] = df.index.map(lambda idx: idx + 1 in strikethrough_row_nums)
补充说明
- 如果表头不是第一行,调整
iter_rows的min_row参数,同时修改Pandas读取时的header参数匹配表头位置 - 标记列
has_strikethrough为布尔值,True表示该行存在带删除线的单元格,False表示无 - 后续可正常对DataFrame执行增删列、数据清洗等操作,标记列会同步保留
内容的提问来源于stack exchange,提问作者Amhm
相关产品推荐
相关产品推荐

