使用Pandas判断Excel工作表中是否存在指定列名的方法
Pandas 校验Excel列是否存在的实现方法
你之前的写法报错是因为直接访问不存在的列会触发Pandas抛出KeyError,正确的校验方式是判断目标列名是否在DataFrame的columns属性中,参考实现如下:
单目标列实现
import pandas as pd # 原有读取Excel逻辑 db = pd.read_excel(full_path_with_file_name, sheet_name=sheet_name) target_col = "column_name" if target_col in db.columns: list_values = db[target_col].values else: # 生成和表格行数一致的默认值列表 list_values = ["unknown"] * len(db)
注意事项
- 不要使用
if db.get(target_col) is not None这类写法,当目标列存在但整列全为空值时会出现误判,判断列是否存在必须用in df.columns的逻辑。 - 生成默认值列表时要和当前DataFrame的行数保持一致,否则后续写入新Excel时会出现长度不匹配的报错。
- 如果需要同时校验多个列,可以封装通用函数复用逻辑,示例如下:
def get_col_values(df: pd.DataFrame, col_name: str, default_val: str = "unknown") -> list: if col_name in df.columns: return df[col_name].values.tolist() return [default_val] * len(df) # 调用示例 list_values1 = get_col_values(db, "column_name1") list_values2 = get_col_values(db, "column_name2", default_val="not found")
内容的提问来源于stack exchange,提问作者lep
相关产品推荐
相关产品推荐

