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

如何合并索引与列均不同的Pandas数据集?

实现类似字典合并逻辑的Pandas DataFrame合并函数

我确定网站上已有类似问题,但一直找不到。我肯定不是第一个碰到这个问题的人。本质上,我需要一个能像嵌套字典合并那样处理Pandas DataFrame的合并函数。如果A和B是嵌套字典,可以用如下代码实现合并:

C = {k: A.get(k, {}) | B.get(k, {}) for k in set().union(*[A, B])}

具体需求如下:

  • 有两个Pandas数据集A和B,二者的索引与列集合不同(但不一定完全不相交)
  • 要生成数据集C:索引为A和B索引的并集,列为A和B列的并集
  • 每个索引/列位置的值规则:若B在该位置有非NaN值则取B的值,否则取A的值
  • 需要实现一个SuperMerge方法,调用方式为C = A.SuperMerge(B),逻辑可描述为:
    C[i,c] = B.get([i, c]) if not B.get([i, c]).isna() else A.get([i, c])
    

这个逻辑和Python字典的更新逻辑类似:合并后的字典拥有两者键的并集,优先取右侧字典的值,否则取左侧的。

示例

原始DataFrame df1

import pandas as pd

df1 = pd.DataFrame({'col1': ['a', 'b'], 'col2': [1, 2], 'col4': ['col4_x', 'col4_y']}, index=['x', 'y'])

输出:

col1  col2    col4
x    a     1  col4_x
y    b     2  col4_y

原始DataFrame df2

df2 = pd.DataFrame({'col1': ['ALT', 'c'], 'col3': ['ONE', 'THREE'], 'col4': [pd.NA, 'col4_z']}, index=['x', 'z'])

输出:

col1   col3    col4
x  ALT    ONE    <NA>
z    c  THREE  col4_z

合并结果

df1.SuperMerge(df2)

输出:

col1  col2   col3    col4
x  ALT     1    ONE  col4_x
y    b     2   <NA>  col4_y
z    c  <NA>  THREE  col4_z

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:42:49