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

使用Python Pandas从Excel选列写入新Excel失败,求排查原因

问题排查与修复方案

核心问题1:列名映射逻辑错误

你在创建first DataFrame时,直接指定columns=["Jira#", "Plan#", "Clone", "Type", "File"],但原df的列名是Excel表格里的原始表头文本,并非你自定义的这些名称。Pandas找不到匹配的列,就会生成全空的DataFrame,写入Excel自然看不到数据。

修复方法:先读取目标列,再通过rename方法替换列名:

# 读取指定列
df = pd.read_excel(file_sel, sheet_name='general_report', usecols="B,BA,DS,AP,BN")
# 重命名列(按读取顺序对应自定义名称)
first = df.rename(columns={
    df.columns[0]: "Jira#",
    df.columns[1]: "Plan#",
    df.columns[2]: "Clone",
    df.columns[3]: "Type",
    df.columns[4]: "File"
})
# 写入时去掉默认索引列(可选,避免多出无意义的Unnamed列)
first.to_excel(filename, sheet_name='new_sheet_name', index=False)

核心问题2:工作表名称可能不匹配

你先用xlrd打开了第一个工作表(sheet_by_index(0)),但后续pd.read_excel指定的是sheet_name='general_report'。如果Excel文件里的实际工作表名称不是这个,会导致读取的df为空。

验证/修复方法:

  • 直接用索引指定工作表,确保和你用xlrd打开的是同一个:
    df = pd.read_excel(file_sel, sheet_name=0, usecols="B,BA,DS,AP,BN")
    
  • 或者先打印所有工作表名称确认:
    xls = pd.ExcelFile(file_sel)
    print("所有工作表名称:", xls.sheet_names)
    

其他冗余优化

  • 代码里导入的numpy、csv、asposecells、aspose等库完全没用到,可以直接删除,减少冗余。
  • 路径拼接可以简化,用f-string更清晰:
    file_loc = fr"C:\Users\{os.getenv('username')}\Downloads\Enterprise Jira AWS {today}*.xls"
    

内容的提问来源于stack exchange,提问作者Murali Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:07:50