使用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
相关产品推荐
相关产品推荐

