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

如何用Pandas读取含重复列名的Excel并保留原列名转CSV

保留重复列名的Excel转CSV实现

问题场景

我的Excel表头包含重复列名,示例如下:

DATE,FIELD1,FEEDER BRANCH,50,100,200,500,1000,2000,FIELD2,50,100,200,500,1000,2000,FIELD3,50,100,200,500,1000,2000

用Pandas加载时,重复列会被自动添加数字后缀(比如50变成50.1),转存为CSV后表头就和原Excel不一致了。我需要修改代码,让加载和导出时都保留原始表头。

原代码如下:

def pandas_csv_from_excel(source):
  dir_and_file = source.split('/')
  filename = dir_and_file[len(dir_and_file) - 1].split('.')
  if not ((filename[1]).lower().startswith('xls')):
    return source

  csv_filename = f"{os.path.join(os.path.dirname(source), filename[0].lower())}.csv"
  location = os.path.dirname(source)
  df = pd.read_excel(source, index_col=None)
  df.to_csv(csv_filename, index=None)
  return csv_filename

修改方案

只需在pd.read_excel中添加mangle_dupe_cols=False参数,禁用重复列名的自动重命名,同时显式指定表头行,就能保留原始列名。

修改后的完整代码:

import os
import pandas as pd

def pandas_csv_from_excel(source):
    dir_and_file = source.split('/')
    filename = dir_and_file[-1].split('.')
    if not filename[1].lower().startswith('xls'):
        return source

    csv_filename = os.path.join(os.path.dirname(source), f"{filename[0].lower()}.csv")
    # 禁用重复列名自动添加后缀,保留原始表头
    df = pd.read_excel(source, index_col=None, header=0, mangle_dupe_cols=False)
    df.to_csv(csv_filename, index=None)
    return csv_filename

关键说明

  • mangle_dupe_cols=False:Pandas默认会给重复列名加.1、.2这类后缀,设置该参数为False就能完全保留原始列名。
  • 显式设置header=0:确保第一行被识别为表头,避免因文件格式问题导致表头读取异常。
  • 顺带优化了原代码的索引获取:用dir_and_file[-1]替代dir_and_file[len(dir_and_file)-1],代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:13