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

Python使用Pandas合并多个DataFrame报on参数重复传值错误怎么办

报错原因

pandas.merge() 原生仅支持同时合并2个DataFrame,函数签名前两个固定位置参数为left(左表)、right(右表),后续位置参数会按顺序匹配到on、how等关键字形参上。
你在代码中一次性传入了4个DataFrame作为位置参数,其中第三个传入的HRDataSet2会被位置匹配到on形参,之后又显式传入on='EmployeeNumber',等于给on参数传递了两次值,因此抛出TypeError: merge() got multiple values for argument 'on'错误,并非代码中显式写了两个on参数。

可行解决方案

链式merge调用

每次merge操作返回的结果仍是DataFrame,可连续调用merge完成多表拼接,适合待合并表数量较少的场景,写法和pd.merge()效果完全一致:

FinalDf = HRTrainingData.merge(HRDataSet1, on='EmployeeNumber', how='outer')\
                        .merge(HRDataSet2, on='EmployeeNumber', how='outer')\
                        .merge(HRDataSet3, on='EmployeeNumber', how='outer')

借助functools.reduce批量合并

如果待合并的DataFrame数量较多,可将所有待合并表存入列表,通过reduce自动迭代完成合并,后续增删合并表仅需修改列表即可,维护成本更低:

from functools import reduce

# 把所有需要合并的DataFrame按顺序放到列表中
merge_list = [HRTrainingData, HRDataSet1, HRDataSet2, HRDataSet3]
FinalDf = reduce(
    lambda left_df, right_df: pd.merge(left_df, right_df, on='EmployeeNumber', how='outer'),
    merge_list
)
补充说明

如果多个待合并表中,除关联键EmployeeNumber外存在其他同名字段,merge默认会为重复列添加_x、_y后缀做区分,可通过传入suffixes参数自定义后缀命名规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:03:21