Pandas读取Excel保留指定列时部分可选列不存在报错如何处理
解决方案
核心思路是先过滤出当前文件实际存在的目标列再做筛选,避免直接索引不存在的列触发KeyError。
基础实现(不存在的列直接忽略)
import pandas as pd # 定义所有需要的目标列清单 target_cols = ['hkont','dmbtr','belnr','monat','gjahr','budat','shkzg','usname','sname','dmsol','dmhab'] df = pd.read_excel(file_location_PDD) # 过滤出当前文件中实际存在的列,不存在的自动剔除 available_cols = [col for col in target_cols if col in df.columns] # 也可以用pandas内置方法实现:available_cols = df.columns.intersection(target_cols).tolist() result_df = df[available_cols] print(result_df) # 导出时建议加index=False避免输出多余的索引列 result_df.to_excel("JETNEW.xlsx", index=False)
进阶实现(不存在的列自动补空)
如果需要保证输出的Excel列数、列顺序固定,缺失的列自动填充为空值,可以在筛选后补全列:
# 接上面筛选后的result_df for col in target_cols: if col not in result_df.columns: result_df[col] = pd.NA # 按照目标列的固定顺序重排列 result_df = result_df.reindex(columns=target_cols) result_df.to_excel("JETNEW.xlsx", index=False)
注意事项
原有代码中重复选取了两次shkzg列,若为误写可直接从target_cols中删除重复项;若确实需要保留两份相同的列,可在筛选完成后手动新增重复列即可。
内容的提问来源于stack exchange,提问作者Tudor Hosu
相关产品推荐
相关产品推荐

