0

0

pandas 如何在 merge 时只保留左表所有行但右表匹配列

舞姬之光

舞姬之光

发布时间:2026-01-17 21:52:02

|

526人浏览过

|

来源于php中文网

原创

需指定how="left"执行左连接,确保左表全量保留、右表仅匹配填充;键列名不同时用left_on/right_on;可预筛选右表列以精简结果;键重复时默认笛卡尔匹配,必要时需去重。

pandas 如何在 merge 时只保留左表所有行但右表匹配列

如果您使用 pandas 的 merge 操作,希望保留左表的全部行,同时仅将右表中能与左表匹配的列值填充进来,其余位置设为缺失值,则需明确指定合并类型为左连接。以下是实现该目标的具体方法:

一、使用 how="left" 参数执行左连接

左连接(left join)确保左表所有行均保留在结果中,右表仅提供匹配键对应的列值;若右表无对应键,则结果中右表列填充 NaN。

1、导入 pandas 库:import pandas as pd

2、定义左表和右表 DataFrame,确保两表存在至少一个共同列名作为连接键,例如 "id":

3、调用 pd.merge() 函数,显式传入 how="left" 参数,并通过 on 指定连接键列名。

4、执行合并后,检查结果 DataFrame 的行数是否等于左表原始行数,验证左表完整性。

二、指定左右表连接键列名不一致时使用 left_on 与 right_on

当左表与右表用于匹配的列名不同时,不能直接使用 on 参数,而需分别指定左表匹配列与右表匹配列,避免因列名差异导致连接失败或误匹配。

1、确认左表中用于连接的列名,例如 "user_id";

2、确认右表中用于连接的列名,例如 "uid";

3、在 pd.merge() 中传入 left_on="user_id"right_on="uid"

4、仍需保留 how="left" 以维持左表全量行。

九歌
九歌

九歌--人工智能诗歌写作系统

下载

三、限制右表仅保留特定列参与合并

为避免右表冗余列污染结果,可在 merge 前对右表进行列筛选,仅保留连接键及所需填充列,提升结果可读性与内存效率。

1、构造右表子集:使用双括号语法选取连接键列与目标列,例如 right_subset = right_df[["uid", "name", "score"]]

2、将该子集传入 merge 函数的 right 参数;

3、同步调整 left_on 与 right_on 的列名参数,确保键列存在于子集中;

4、执行合并后,结果中仅含左表全部行与右表指定列的匹配值。

四、处理重复连接键时的默认行为说明

当左表或右表中连接键存在重复值时,merge 默认执行笛卡尔积式匹配,即左表某键每出现一次,就与右表所有同键行组合生成新行。该行为可能导致结果行数显著增加,但依然满足“保留左表所有行”的要求。

1、检查左表连接键列是否含重复值:left_df["id"].duplicated().any()

2、检查右表连接键列是否含重复值:right_df["id"].duplicated().any()

3、若需规避笛卡尔扩展,应在 merge 前对右表按连接键去重,例如 right_df.drop_duplicates(subset=["id"], keep="first")

4、将去重后的右表传入 merge 调用。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

51

2025.12.04

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

84

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

24

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

56

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号