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

使用pd.concat合并Excel文件时为何新增空列?

解决pd.concat合并Excel出现空列的问题

可能原因

  • 两个文件的列名看似相同但实际存在隐形字符(如首尾空格、换行、全角/半角差异),导致Pandas识别为不同列,合并后出现空列。
  • 其中一个Excel文件包含隐藏列或空列,pd.read_excel默认读取所有列,合并后显现出来。

排查与解决步骤

  1. 验证列名一致性
    打印两个DataFrame的列名,确认是否完全匹配:

    file_list = glob.glob(path + "/*.xlsx")
    dfs = [pd.read_excel(p) for p in file_list]
    
    # 打印列名对比
    print("文件1列名:", dfs[0].columns.tolist())
    print("文件2列名:", dfs[1].columns.tolist())
    print("列名集合是否一致:", set(dfs[0].columns) == set(dfs[1].columns))
    
  2. 清洗列名(处理隐形字符)
    如果列名存在隐形字符,用以下方法清洗后再合并:

    def clean_columns(df):
        # 去除首尾空格、换行、制表符
        df.columns = df.columns.str.strip().str.replace(r'[\n\t]', '', regex=True)
        # 统一转为半角(如果有全角列名)
        df.columns = df.columns.str.normalize('NFKC')
        return df
    
    # 读取并清洗每个文件的列名
    dfs = [clean_columns(pd.read_excel(p)) for p in file_list]
    # 合并
    res = pd.concat(dfs, axis=0, ignore_index=True)
    
  3. 指定读取列(避免读取空列)
    如果已知目标列名,直接指定usecols参数读取,排除空列:

    # 替换为你的实际列名
    target_cols = ['姓名', '年龄', '部门']
    dfs = [pd.read_excel(p, usecols=target_cols) for p in file_list]
    res = pd.concat(dfs, axis=0, ignore_index=True)
    
  4. 检查Excel源文件
    打开两个Excel文件,确认:

    • 没有隐藏列(右键列标→取消隐藏)
    • 列名完全一致(无空格、特殊字符差异)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:10:53