能否使用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
相关产品推荐
相关产品推荐

