python -- 用merge函数在python中实现 join 操作

这篇博客介绍了Pandas库中的merge函数,它类似于数据库的join操作,用于合并两个DataFrame。文章详细阐述了三种情况:关联列名称相同、不同以及非关联列名称重复时的合并方法,并给出了具体的语法和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

又发现了pandas包里面的一个好用的函数——merge函数!!!!!!!

【描述】

merge函数类似于mysql等数据库语言中的join函数,可以实现对两个DataFrame的条件合并。

【准备】

import pandas as pd
import numpy as np

【语法】

(1)当两个DataFrame的关联列名称相同时:

merge(DataFrame_A,DataFrame_B,on = [],how = [],...)

DataFrame_A和DataFrame_B就是要合并的两个DataFrame,on代表以哪个key作为合并条件,当然可以取多个关联列,此时  可以以list的形式为on赋值(例如 on = [student_id,student_name]时,那么两个表中相同student_id和student_name的数据就会合并成一行哈,不严谨,但是可以这么理解~~),how代表那种连接方式(可选择left,right,outer,默认为inner),当然还有其他参数,但这三个是最关键的!

(2)当两个DataFrame的关联列名称不同时:

merge(DataFrame_A,DataFrame_B,left_on = [],right_on = [] ,how = [],...)

区别在于on被分开为left_on和right_on,用来标识两个DataFrame的关联列。其他不变

(3)当两个DataFrame的非关联列存在名称重复时:

可以在merge函数中添加参数:suffixes = ('_left','_right') 来区别标识(注:'_left','_right'

### Python 中 `merge` 函数的用法 #### 什么是 `merge` 函数? `merge` 是 Pandas 库中的一个重要函数,用于基于共同列或索引将两个 DataFrame 进行合并。其功能类似于 SQL 的 JOIN 操作--- #### 基本语法 以下是 `merge` 函数的基本语法: ```python pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) ``` - **`left` 和 `right`**: 需要合并的两个 DataFrame 对象。 - **`how`**: 合并的方式,默认为 `'inner'`(内连接)。可选项包括 `'left'`, `'right'`, `'outer'`, 和 `'inner'`[^1]。 - **`on`**: 指定用来合并的列名。如果未指定,则会尝试匹配两表中共有的列名称作为键[^3]。 - **`left_on` 和 `right_on`**: 当左表和右表的键不相同时,分别指定各自的键。 - **`suffixes`**: 如果存在重复列名,可以通过此参数自定义后缀来区分它们[^2]。 - **`indicator`**: 是否添加一列表明每条记录来自哪个表(仅适用于某些场景)。 --- #### 不同类型的合并方式 (`how`) | 参数值 | 描述 | |--------|----------------------------------------------------------------------| | inner | 只保留两张表中都存在的键对应的行(交集),这是默认行为。 | | outer | 返回所有可能组合的结果集合,缺失部分填充 NaN(全集)。 | | left | 左外连接,返回左边表的所有行以及右边表中有对应键的部分。 | | right | 右外连接,返回右边表的所有行以及左边表中有对应键的部分。 | 示例代码如下: ```python import pandas as pd df_d = pd.DataFrame({'部门': ['销售部', '技术部'], '人数': [10, 20]}) df_e = pd.DataFrame({'部门': ['销售部', '市场部'], '预算': [5000, 8000]}) # 内连接 (Inner Join) result_inner = pd.merge(df_d, df_e, how='inner', on='部门') print(result_inner) # 外连接 (Outer Join) result_outer = pd.merge(df_d, df_e, how='outer', on='部门', indicator=True) print(result_outer) # 左连接 (Left Join) result_left = pd.merge(df_d, df_e, how='left', on='部门', indicator=True) print(result_left) # 右连接 (Right Join) result_right = pd.merge(df_d, df_e, how='right', on='部门', indicator=True) print(result_right) ``` --- #### 自定义列名冲突解决方法 当两个表中存在相同列名时,Pandas 默认会在这些列上附加 `_x` 和 `_y` 来区分。可以使用 `suffixes` 参数手动修改后缀。 示例代码: ```python df_a = pd.DataFrame({'key': ['A', 'B'], 'value': [1, 2]}) df_b = pd.DataFrame({'key': ['A', 'C'], 'value': [3, 4]}) merged_df = pd.merge(df_a, df_b, on='key', suffixes=('_from_a', '_from_b')) print(merged_df) ``` --- #### 使用索引进行合并 除了按列名合并之外,还可以通过设置 `left_index=True` 或 `right_index=True` 将索引用作键[^4]。 示例代码: ```python df_x = pd.DataFrame({'value': [1, 2]}, index=['X', 'Y']) df_y = pd.DataFrame({'value': [3, 4]}, index=['X', 'Z']) merged_by_index = pd.merge(df_x, df_y, left_index=True, right_index=True, suffixes=('_x', '_y')) print(merged_by_index) ``` --- #### 总结 `merge` 函数提供了灵活的方式来实现不同形式的数据关联操作,在数据分析领域非常常用。理解其核心参数及其作用对于高效处理复杂数据至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值