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

能否使用Pandas合并两个以上DataFrame?多表合并代码报错求助

如何用Pandas合并两个以上的DataFrame?

嘿,这个问题我见过好多开发者踩坑——pandas.merge()本质上是一次只能合并两个DataFrame的函数,你直接把df1、df2、df3、df4四个都传进去,它肯定会懵的,这就是报错的核心原因!别慌,给你两种实用的解决办法:

方法一:链式调用merge

最简单的思路就是“循序渐进”,每次只合并两个DataFrame,把上一次的合并结果作为下一次的输入:

# 分步合并,逻辑清晰
merged_df = df1.merge(df2, on="key", how="inner")
merged_df = merged_df.merge(df3, on="key", how="inner")
merged_df = merged_df.merge(df4, on="key", how="inner")

# 也可以写成一行链式调用,更简洁
merged_df = df1.merge(df2, on="key", how="inner")\
               .merge(df3, on="key", how="inner")\
               .merge(df4, on="key", how="inner")

方法二:用functools.reduce批量合并

如果要合并的DataFrame数量很多,写一堆merge会很繁琐,这时候可以用functools.reduce来迭代合并所有DataFrame:

from functools import reduce
import pandas as pd

# 先把所有要合并的DataFrame放进一个列表
dfs = [df1, df2, df3, df4]

# 用reduce自动遍历列表,逐个完成合并
merged_df = reduce(lambda left, right: left.merge(right, on="key", how="inner"), dfs)

这个方法的好处是不管你有5个还是10个DataFrame,只要统一放进列表里就行,不用重复写merge代码,扩展性更强。

最后补个小知识点:你原来的代码报错,是因为pandas.merge()的第一个参数是左表、第二个是右表,后面的参数全是合并规则(比如on、how),你传四个DataFrame的话,第三个df会被当成on参数的值,类型完全不匹配,自然就抛出错误啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:52:48