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

三个含4个共同列与1个唯一列的DataFrame合并报错如何解决

报错原因

pandas的merge方法仅支持单次传入两个DataFrame做合并,你直接传入DF1,DF2,DF3三个参数触发了逻辑歧义,才会返回该报错。

正确实现方案

方案1:链式合并(适合少量表合并场景)

分两次完成合并,先合并前两个表得到临时表,再用临时表和第三个表合并:

# 合并DF1、DF2得到临时表
temp_df = pd.merge(DF1, DF2, on=['BHID','FROM','TO','SAMP ID'], how='inner')
# 临时表和DF3合并得到最终结果
FinalDF = pd.merge(temp_df, DF3, on=['BHID','FROM','TO','SAMP ID'], how='inner')

方案2:reduce批量合并(适合多表扩展场景)

如果后续可能新增更多同结构DataFrame,用functools.reduce做批量合并更简洁:

from functools import reduce

# 把所有待合并的DataFrame存入列表
df_list = [DF1, DF2, DF3]
# 批量完成多表匹配合并
FinalDF = reduce(
    lambda left, right: pd.merge(left, right, on=['BHID','FROM','TO','SAMP ID'], how='inner'),
    df_list
)

注意:如果不需要仅保留四个字段在三个表中都完全匹配的行,可以把how参数从inner改成outer,即可保留所有匹配到的行,未匹配到的元素列位置自动填充空值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:04