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

基于最优可用组合合并两个Pandas DataFrame(忽略空值)

问题描述

现有两个包含key1、key2关键字段的DataFrame(df1和df2),需忽略空值,基于最优匹配组合将二者合并得到目标DataFrame df3。

输入1(df1)

key1 key2  val1
0    A    E     1
1    B    F     2
2    C    G     3
3    D    H     4

输入2(df2)

key1 key2  val2
0    A    E     5
1    B    F     6
2  NaN    G     7
3    D  NaN     8
4    A  NaN     9

预期输出(df3)

key1 key2  val1  val2
0    A    E     1     5
1    B    F     2     6
2  NaN    G     3     7
3    D  NaN     4     8

匹配规则说明

  • 行0和行1:df1与df2的key1和key2均匹配,直接合并;
  • 行2:key1不匹配但key2匹配,仅基于key2合并;
  • 行3:key1匹配但key2不匹配,仅基于key1合并。

示例代码

import numpy as np
import pandas as pd

df1 = pd.DataFrame({
    'key1':['A', 'B', 'C', 'D'],
    'key2':['E', 'F', 'G', 'H'],
    'val1':[1, 2, 3, 4]})

df2 = pd.DataFrame({
    'key1':['A', 'B', np.NaN, 'D', 'A'],
    'key2':['E', 'F', 'G', np.NaN, np.NaN],
    'val2':[5, 6, 7, 8, 9]})

df3 = pd.DataFrame({
    'key1':['A', 'B', np.NaN, 'D'],
    'key2':['E', 'F', 'G', np.NaN],
    'val1':[1, 2, 3, 4],
    'val2':[5, 6, 7, 8]})

内容的提问来源于Stack Exchange,提问作者l a s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:41:05