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

Python合并多份同结构Excel报错:TypeError参数问题求助

问题修复方案

错误原因

你遇到的TypeError是因为**DataFrame.append()方法只能接收单个DataFrame对象作为参数**,但你最后一行代码一次性传入了df, combdf2, combdf3, combdf4多个对象,导致参数解析冲突。此外,append()方法在pandas 2.0及以上版本已被官方弃用,推荐使用更高效的pd.concat()来合并多个DataFrame。

优化后的代码

import pandas as pd
import sys
sys.path.insert(0, 'S:\\19 Performance Analytics\ETL Data Extraction\\PyCr')

# 只定义一次需要提取的列,避免重复代码
columns = [
    'Report Pull Out Date (DD-MMM-YY)', 'Property', 'Confirmation No.',
    'Guest Name', 'Arrival', 'Departure', 'Rate Code', 'Source',
    'Arr. Transfer Type', 'Dep. Transfer Type', 'Status', 'Agent Initial',
    'Remark', 'Completion Date', 'Completion Month', 'Received Month',
    'Arrival Month', 'Tasks Status', 'AHT', 'Pending Aging', 'SLA'
]

# 把所有需要读取的Excel文件路径整理成列表
file_paths = [
    r"C:\Users\jiacheng.heng\OneDrive - Shangri-La Group\NOVA\Arrival Check Tracker\CT2 Arrival Check Report\2023\2023 - Q1 - MYSLOS RESORT Arrival Checks.xlsx",
    r"C:\Users\jiacheng.heng\OneDrive - Shangri-La Group\NOVA\Arrival Check Tracker\CT2 Arrival Check Report\2023\2023 - Q2 - MYSLOS RESORT Arrival Checks.xlsx",
    r"C:\Users\jiacheng.heng\OneDrive - Shangri-La Group\NOVA\Arrival Check Tracker\CT2 Arrival Check Report\2023\2023 - Q1 & Q2 - MYSLOS CITY Arrival Checks.xlsx",
    r"C:\Users\jiacheng.heng\OneDrive - Shangri-La Group\NOVA\Arrival Check Tracker\CT1 Arrival Check Report\2023\2023 - Q1 & Q2 - HKOS Arrival Checks.xlsx",
    r"C:\Users\jiacheng.heng\OneDrive - Shangri-La Group\NOVA\Arrival Check Tracker\CT1 Arrival Check Report\2023\2023 - Q3 & Q4 - HKOS Arrival Checks.xlsx"
]

# 初始化一个空列表存储所有读取的DataFrame
df_list = []
for path in file_paths:
    xls = pd.ExcelFile(path)
    # 读取指定工作表和指定列,添加到列表
    df_part = xls.parse('Data', usecols=columns)
    df_list.append(df_part)

# 合并所有DataFrame,重置索引
combdf = pd.concat(df_list, ignore_index=True)
# 移除最后一列(和原代码保持一致)
combdf = combdf.iloc[:, :-1]

# 导出到Excel
combdf.to_excel(r"S:\19 Performance Analytics\NOVA\Appended Arrival Checks.xlsx", index=0)

关键修改点

  • 简化重复代码:将重复定义的columns和文件读取逻辑合并,减少冗余,后续新增文件只需在列表里加路径即可。
  • 替换append为concat:pd.concat()支持一次性合并多个DataFrame对象,更稳定且适配新版本pandas。
  • 避免参数冲突:通过列表收集所有子DataFrame,再一次性合并,彻底解决原代码中多参数传入的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:55:35