Python批量替换xlsx工作表中-999.25值为0.01的实现方法
Python批量替换Excel指定范围测井无效值方案
需求梳理
- 处理对象:路径为
S:/Python/New folder/1046102004 Analysis.xlsx的工作簿下名为Data的工作表 - 表结构规则:
- 第1行:测井名称表头
- 第2行:测井单位行
- 第3行至表尾:实际测井数据
- 处理要求:将数据范围内所有值为
-999.25的无效值替换为0.01,不改动前两行的表头、单位内容
原有代码问题
你之前写的代码存在4个影响运行/效果的问题:
- 遍历范围覆盖全表所有行,存在误改前两行内容的风险
- 直接用
==比对浮点值,可能因为Excel浮点数存储精度问题漏匹配 - 缺少文件保存逻辑,修改后的内容不会写入文件
- 缺少依赖导入语句,无法直接运行
可直接运行的修正代码
import openpyxl # 基础配置 file_path = "S:/Python/New folder/1046102004 Analysis.xlsx" invalid_val = -999.25 replace_val = 0.01 sheet_name = "Data" data_start_row = 3 # 加载工作簿,data_only=True读取单元格实际计算值而非公式 wb = openpyxl.load_workbook(file_path, data_only=True) ws = wb[sheet_name] # 仅遍历数据区单元格,跳过前2行表头 for row in ws.iter_rows(min_row=data_start_row): for cell in row: # 先校验值为数值类型,再做精度容错匹配 if isinstance(cell.value, (int, float)) and abs(cell.value - invalid_val) < 1e-6: cell.value = replace_val # 保存修改,若需保留原文件可将路径改为新文件名输出副本 wb.save(file_path) wb.close()
使用提示
- 如果担心修改原文件无法恢复,可将
wb.save()的入参改为新路径,比如"S:/Python/New folder/1046102004 Analysis_已替换.xlsx",校验处理结果无误后再替换原文件 - 代码里的浮点差值判断阈值设为
1e-6,足够覆盖测井数据的精度场景,不会出现误替换、漏替换的问题
内容的提问来源于stack exchange,提问作者Mbw00001
相关产品推荐
相关产品推荐

