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

使用pandas concat合并CSV文件触发TypeError报错如何解决

报错核心原因

pd.concat()的第一个入参必须传入可迭代的pandas对象集合(比如由多个DataFrame组成的列表),你在循环中每次只传入了单个df1 DataFrame对象,直接触发类型报错。
除此之外你的代码还有三个隐藏逻辑问题:

  • 非csv文件的判断逻辑缩进错误:如果遍历到的文件不是csv格式,df1变量不会被定义,后续代码会直接报「变量不存在」的错误
  • 循环内每次执行concat都会用新读入的文件覆盖之前的df结果,根本没有实现多文件累加拼接的效果,运行完只会保留最后一个读入的csv文件内容
  • 直接用字符串拼接路径容易出现斜杠缺失/冗余的问题,稳定性差
修正后的实现代码
import pandas as pd
import os

input_file_path = "C:/Users/laura/Downloads/excel files/"
output_file_path = "C:/Users/laura/OneDrive/Desktop/master excel/"

excel_file_list = os.listdir(input_file_path)
# 初始化空列表,存放所有读入的DataFrame
df_list = []

for excel_file in excel_file_list:
    # 只处理csv格式文件,用os.path.join拼接路径更稳定
    if excel_file.endswith('.csv'):
        file_full_path = os.path.join(input_file_path, excel_file)
        temp_df = pd.read_csv(file_full_path)
        df_list.append(temp_df)

# 一次性拼接所有DataFrame
# axis=1 是横向按列拼接(各文件作为新列并排拼接)
# 如果需要纵向按行拼接(同结构文件上下堆叠行),把axis=1改成axis=0即可
final_df = pd.concat(df_list, axis=1, ignore_index=True)

# 后续如果要导出结果可以加下面这行
# final_df.to_csv(os.path.join(output_file_path, "合并结果.csv"), index=False)
参数说明
  • 如果你需要的是多个同结构csv上下堆叠、合并所有行的效果,把concat的参数改成axis=0即可,这也是绝大多数批量合并同格式csv文件的常用场景,比旧版pandas的append方法运行效率更高
  • 如果你确实需要把每个csv作为独立列横向并排拼接,保留代码里的axis=1即可,拼接前建议确认各文件的行顺序是匹配的,避免数据错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:42:16