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

如何基于不同值连接两个DataFrame?已尝试JOIN和MERGE未成功

解决方案

由于看不到你提供的DataFrame附图,我先基于常见的合并失败场景给出针对性方案,你可以根据实际情况调整:

多键匹配合并

如果目标DataFrame需要基于多个列进行匹配(比如同时匹配ID和分组这类列),不要只使用单一键,否则会出现匹配错误:

import pandas as pd

# 替换成你实际的匹配列名
merged_df = pd.merge(DF1, DF2, on=['匹配列1', '匹配列2'], how='outer')
# how参数按需选择:left保留DF1所有行,right保留DF2所有行,inner只保留匹配行,outer保留两边所有行

处理重复匹配键

如果其中一个DataFrame存在重复的匹配键,会导致合并后出现多余行,先对重复数据做聚合/去重:

# 示例:对DF2按匹配键取第一个非空值,按需换成sum/mean等聚合方式
DF2_clean = DF2.groupby('匹配列').first().reset_index()
merged_df = pd.merge(DF1, DF2_clean, on='匹配列', how='left')

保留原索引与行顺序

如果需要严格保留原DF1的行顺序和索引结构,用join并指定索引:

# 将匹配列设为索引
DF1_idx = DF1.set_index('匹配列')
DF2_idx = DF2.set_index('匹配列')
# 左连接后恢复原索引
merged_df = DF1_idx.join(DF2_idx, how='left').reset_index()

空值自定义填充

如果目标DF需要将合并后的空值替换为特定内容:

merged_df = merged_df.fillna({'目标列1': 0, '目标列2': '无数据'})

如果以上方案仍不满足需求,请提供:

  • DF1和DF2的样本数据(比如用df.head().to_dict()输出)
  • 目标DataFrame的具体结构示例

内容的提问来源于stack exchange,提问作者Fidias Francisco Franchi Rocca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:01:09