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

使用Pandas合并Excel文件并添加自定义列时出现AttributeError错误

解决Excel合并为CSV时的AttributeError问题

首先,咱们来拆解你遇到的错误根源:AttributeError: 'NoneType' object has no attribute 'to_csv'

这个错误的核心原因很简单:pandas的insert()方法是原地修改DataFrame,它不会返回新的DataFrame对象,而是返回None。你把这个None重新赋值给了combined,后面再调用combined.to_csv()自然就会报错啦。

另外,你的代码里还漏掉了关键的import pandas as pd语句,这也是新手常犯的小疏漏,必须补上才能正常运行。

下面是修正后的完整代码,我还加了一些细节优化:

import glob
import pandas as pd  # 补上pandas的导入语句

path = input("Enter the location of files ")
GLB_DM_VER = input("Enter global DM version")

# 用正斜杠避免路径转义问题,或者用双反斜杠
file_list = glob.glob(path + "/*.xls")
# 更安全的路径写法(跨系统兼容):
# import os
# file_list = glob.glob(os.path.join(path, "*.xls"))

excels = [pd.ExcelFile(name) for name in file_list]
# 注意:sheet_names[2]是取第三张工作表(索引从0开始),如果你的Excel没有第三张表会报错,这里要确认清楚
frames = [x.parse(x.sheet_names[2], header=0, index_col=None) for x in excels]
combined = pd.concat(frames)

# 直接调用insert,不要赋值给combined!
combined.insert(loc=1, column='Global_DM_Version', value=GLB_DM_VER)

# 导出CSV文件
combined.to_csv(
    "STAND_2.csv",
    header=['TARGET_DOMAIN','SOURCE_DOMAIN','DOMAIN_LABEL','SOURCE_VARIABLE','RAVE_LABEL','TYPE','VARIABLE_LENGTH','CONTROL_TYPE','CODELIST_OID','TARGET_VARIABLE','MANDATORY','RAVE_ORIGIN'],
    index=False
)

额外给你几个小提醒:

  • 确认x.sheet_names[2]对应的是你要读取的工作表,如果你想读取第一张表,应该用x.sheet_names[0]
  • 如果你的Excel文件是.xlsx格式,记得把glob里的*.xls改成*.xlsx
  • 路径部分用os.path.join可以避免Windows和Linux系统的路径分隔符差异问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:29