Jupyter读取Excel时如何筛选指定ANGLE列、处理缺列并简化代码?
实现方案
核心思路是先获取Excel实际存在的列名,和目标列做匹配后再读取数据,既避免缺列报错,也比硬循环、异常捕获的方案更高效简洁。
步骤1:优化目标列生成逻辑
抛弃冗余的for循环拼接写法,用格式化补零一行生成所有符合命名规则的目标列:
import pandas as pd # 自动生成01_ANGLE ~ 100_ANGLE的列名列表,自动处理个位数前导0 target_columns = [f"{idx:02d}_ANGLE" for idx in range(1, 101)]
步骤2:匹配实际存在的有效列
先仅读取Excel表头获取真实列名(不加载全量数据,性能开销可以忽略),再筛选出实际存在的目标列:
# 仅读取表头行,不加载数据内容,速度极快 actual_columns = pd.read_excel("你的文件路径.xlsx", nrows=0).columns.tolist() # 取交集,严格保留01~100的列顺序,自动过滤不存在的列 valid_columns = [col for col in target_columns if col in actual_columns]
注意:不要用
set(target_columns) & set(actual_columns)做交集,集合无序会打乱列的读取顺序。
步骤3:读取有效列数据
将筛选后的有效列传入usecols参数即可正常读取,不会因为缺列报错:
df = pd.read_excel("你的文件路径.xlsx", usecols=valid_columns)
可选扩展功能
如果需要做数据质量校验,可以加几行代码记录缺失的列,方便后续排查:
missing_columns = [col for col in target_columns if col not in actual_columns] if missing_columns: print(f"当前文件缺失以下ANGLE列:{missing_columns}")
如果需要批量处理多份Excel,把上述逻辑封装成通用函数即可,传入文件路径直接返回处理好的DataFrame。
内容的提问来源于stack exchange,提问作者Youngrak Choi
相关产品推荐
相关产品推荐

