You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:51:00