当前位置: 首页 > ds >正文

一周学会Pandas2之Python数据处理与分析-Pandas2数据合并与对比-df.combine():元素级合并

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

df.combine():元素级合并

df.combine() 是 pandas 中用于 按元素合并两个 DataFrame 的灵活方法,允许通过自定义函数处理重叠或冲突的值。与 mergejoin 等基于索引或列对齐的合并不同,combine() 更适用于元素级别的精细化合并逻辑。以下是详细说明及示例:

基本语法:

DataFrame.combine(other,                 # 另一个 DataFrame 或 Seriesfunc,                  # 合并函数,定义如何组合两个元素fill_value=None,       # 缺失值的填充值(默认 NaN)overwrite=True         # 是否用 other 的值覆盖当前 DataFrame 的非空值
)

核心功能

  1. 元素级合并:对两个 DataFrame 的每个元素应用 func 函数,决定最终值。

  2. 覆盖逻辑

    • overwrite=True(默认),当 other 的值非空时,优先使用 other 的值。

    • overwrite=False,只有当当前 DataFrame 的值为空时,才使用 other 的值。

  3. 索引对齐:合并时按行和列索引对齐,缺失位置用 fill_value 填充。


参数说明

参数说明
func接受两个标量参数(当前元素和 other 的元素),返回合并后的值的函数
fill_value对齐索引时,缺失位置的填充值(默认 NaN)
overwrite是否允许 other 的非空值覆盖当前 DataFrame 的非空值(默认 True)

常用场景示例

1,基本合并(优先保留 other 的值)
import pandas as pd
​
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[0, 1, 2])
df2 = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]}, index=[1, 2, 3])
​
# 默认 overwrite=True,用 df2 的值覆盖 df1
result = df1.combine(df2, lambda x, y: y)

2,自定义合并函数(例如取最大值)
import pandas as pd
​
df1 = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
})
​
df2 = pd.DataFrame({'A': [3, 2, 1],'B': [6, 5, 4]
})
​
​
def diff(x, y):return x - y
​
​
result = df1.combine(df2, func=diff)

3, 处理缺失值(fill_value 参数)
import pandas as pddf1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[0, 1, 2])
df2 = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]}, index=[1, 2, 3])# 填充缺失值为0,再合并
result = df1.combine(df2, lambda x, y: x + y, fill_value=0)

输出:

     A     B
0   1.0   4.0   # df2索引0缺失,视为0,结果1+0=1
1  22.0  55.0   # 2+20=22, 5+50=55
2  33.0  66.0   # 3+30=33, 6+60=66
3  30.0  60.0   # df1索引3缺失,视为0,结果0+30=30

http://www.xdnf.cn/news/9187.html

相关文章:

  • 统一人体姿态估计与分割的新方法:KDC
  • C# Windows Forms应用程序-003
  • day 37
  • IP协议解析
  • 使用json传递信息时接收不到的问题
  • python做题日记(9)
  • 【AI News | 20250526】每日AI进展
  • AI时代新词-私有数据与AI结合的技术:隐私保护与数据利用的平衡
  • pg库分表操作步骤- PostgreSQL 分区表
  • 车载通信网络 --- 传统车载网络及其发展
  • 固态硬盘的寿命与可靠性如何保障?——以Kingston FURY Renegade G5为例的专业解析
  • 自动编码器 潜在空间 Autoencoders 视频截图
  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • GitLab-CI快速开始
  • gin使用Mysql连接池用法
  • IDEA没有出现TODO
  • 实在Agent成业界首批全面适配鸿蒙、麒麟、统信信创系统的智能体
  • git clone 提速
  • redis在Spring中的一些使用
  • 用llama3微调了一个WiFiGPT 用于室内定位
  • Linux文本搜索——grep命令详解
  • PostGIS实现二进制转栅格数据应用实践【ST_RastFromWKB】
  • Web安全渗透之长城杯夺旗赛
  • 工作计划工作总结年终总结PPT模版分享
  • 高能效比服务器
  • pytorch问题汇总
  • 【Redis】3-Redis应用
  • vscode java debug terminal 中文乱码
  • n8n 读写本地文件
  • 原生js实现数据响应方法2.0