新闻中心
基于多列合并 Pandas DataFrames 的实用指南

本文档详细介绍了如何使用 Pandas 库基于多个列来合并两个 DataFrames。我们将探讨使用 `merge` 函数的不同方法,包括处理缺失值和排序结果,以生成满足特定需求的合并数据集。通过学习本文,你将掌握高效的数据合并技巧,为后续的数据分析和处理打下坚实基础。
在数据分析和处理中,经常需要将来自不同来源的数据集合并成一个统一的数据集。Pandas 库提供了强大的 merge 函数,可以根据一个或多个列将两个 DataFrames 连接起来。本文将详细介绍如何使用 merge 函数,并提供一些实用的技巧和示例。
使用 merge 函数进行外连接
最直接的方法是使用 pandas.merge 函数执行外连接(outer join)。外连接会保留两个 DataFrame 中的所有行,并在缺失值的地方填充 NaN。为了区分左右 DataFrame 的列名,我们可以使用 add_suffix 函数为列名添加后缀。
import pandas as pd
# 示例数据
df1 = pd.DataFrame({
'level': ['Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 3'],
'title': ['Effective', 'Evaluation', 'Ice Breaker', 'Fire', 'Introduction', 'Understanding', 'Connect']
})
df2 = pd.DataFrame({
'level': ['Level 0', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 4'],
'title': ['Effective', 'Evaluation', 'Comedy', 'Introduction', 'Understanding', 'Connect']
})
# 使用 merge 进行外连接,并添加后缀
out = df1.merge(df2.add_suffix('_'), how='outer',
left_on=['level', 'title'],
right_on=['level_', 'title_'])
print(out)输出结果如下:
level title level_ title_ 0 Level 0 Effective Level 0 Effective 1 Level 1 Evaluation Level 1 Evaluation 2 Level 1 Ice Breaker NaN NaN 3 Level 1 Fire NaN NaN 4 Level 2 Introduction Level 2 Introduction 5 Level 2 Understanding Level 2 Understanding 6 Level 3 Connect NaN NaN 7 NaN NaN Level 1 Comedy 8 NaN NaN Level 4 Connect
对合并后的结果进行排序
如果需要对合并后的结果进行排序,可以使用 sort_values 函数。在这种情况下,我们不需要手动添加后缀,可以直接在 left_on 和 right_on 参数中指定要合并的列。
Zyro AI Background Remover
Zyro推出的AI图片背景移除工具
145
查看详情
import pandas as pd
# 示例数据
df1 = pd.DataFrame({
'level':
['Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 3'],
'title': ['Effective', 'Evaluation', 'Ice Breaker', 'Fire', 'Introduction', 'Understanding', 'Connect']
})
df2 = pd.DataFrame({
'level': ['Level 0', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 4'],
'title': ['Effective', 'Evaluation', 'Comedy', 'Introduction', 'Understanding', 'Connect']
})
# 使用 merge 进行外连接,并排序
out = (df1.merge(df2, how='outer',
left_on=[df1['level'], df1['title']],
right_on=['level', 'title'])
.sort_values(by=['level'])
)
print(out)输出结果如下:
level title level_x title_x level_y title_y 0 Level 0 Effective Level 0 Effective Level 0 Effective 1 Level 1 Evaluation Level 1 Evaluation Level 1 Evaluation 2 Level 1 Ice Breaker Level 1 Ice Breaker NaN NaN 3 Level 1 Fire Level 1 Fire NaN NaN 7 Level 1 Comedy NaN NaN Level 1 Comedy 4 Level 2 Introduction Level 2 Introduction Level 2 Introduction 5 Level 2 Understanding Level 2 Understanding Level 2 Understanding 6 Level 3 Connect Level 3 Connect NaN NaN 8 Level 4 Connect NaN NaN Level 4 Connect
清理结果
如果需要删除重复的列,可以取消注释代码中的 .drop(columns=['level', 'title']) 行。这将删除用于合并的原始列,只保留带有后缀的列。
注意事项
- 确保要合并的列具有相同的数据类型。如果数据类型不匹配,可能会导致合并失败或产生意外的结果。
- 如果两个 DataFrame 中存在相同的列名,merge 函数会自动为右侧 DataFrame 的列名添加后缀。可以通过 suffixes 参数自定义后缀。
- how 参数指定了合并的方式。除了 outer,还可以使用 inner(内连接)、left(左连接)和 right(右连接)。
- 在处理大型数据集时,合并操作可能会比较耗时。可以考虑使用 dask 等分布式计算框架来加速合并过程。
总结
本文介绍了如何使用 Pandas 库基于多个列来合并两个 DataFrames。通过掌握 merge 函数的不同用法,可以灵活地处理各种数据合并场景。在实际应用中,需要根据具体的需求选择合适的合并方式和参数,并注意数据类型和性能优化等问题。
以上就是基于多列合并 Pandas DataFrames 的实用指南的详细内容,更多请关注其它相关文章!
# seo商品标题优化规则
# 网站seo免费咨询
# 萝岗区企业网站优化
# 汉中公司网站优化方法
# 苏州seo推广技术培训
# 宁波营销推广厂家
# 洛阳网站建设最好
# 荆州网站推广排名多少钱
# 10年来品牌营销推广
# 视频搜索网站建设
# 多个
# 中文网
# 可以通过
# 相关文章
# 并在
# 不需要
# 还可以
# 可以使用
# 详细介绍
# 如何使用
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
J*aScript中正确使用querySelectorAll与复杂CSS选择器
J*a TimerTask中HashMap意外清空的深层原因与解决方案
苹果手机如何防止被恶意App追踪
iwriter统一登录平台 iwrite账号密码登录页面
斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程
Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】
Composer如何在生产环境安全地执行composer update
Win11怎么开启省电模式_Win11电池节电模式自动开启
PDF文件体积过大处理_PDF压缩技巧详解
b站赚钱渠道_b站收益来源
响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配
Python模块化编程:有效管理依赖与避免循环引用
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
Golang指针如何与map组合使用_Golang map指针组合实践
蛙漫官方正版入口 蛙漫网页在线全集免费观看
一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法
将JSON对象数组转置为键值对列表的实用指南
Node.js 中使用 node-cron 实现定时 API 数据抓取与处理
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
将HTML动态表格多行数据保存到Google Sheet的教程
圆通快递查询实时追踪 圆通物流包裹状态快速查看
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
Python getattr() 异常处理深度解析:避免程序意外退出
顺丰快件物流信息 官方网站查询入口
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
mysql备份恢复性能优化_mysql备份恢复性能优化方法
学习通在线学习平台 学习通网页版直接进入课程中心
小米Civi 4录制视频过暗_小米Civi 4亮度优化
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址
React Router 嵌套组件中 URL 重定向问题的解决方案
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
在Go Martini框架中高效服务动态生成图像的实践指南
最新韩小圈网页版登录入口_官网在线观看官方链接
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
2026春节假期票务安排_2026春节放假购票指南
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
荣耀Play7T运行卡顿解决_荣耀Play7T性能优化
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
c++20的std::jthread是什么_c++可中断线程与RAII式管理
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
Go语言HTML解析:利用Goquery精准获取指定元素内容


2025-11-17
浏览次数:次
返回列表
['Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 3'],
'title': ['Effective', 'Evaluation', 'Ice Breaker', 'Fire', 'Introduction', 'Understanding', 'Connect']
})
df2 = pd.DataFrame({
'level': ['Level 0', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 4'],
'title': ['Effective', 'Evaluation', 'Comedy', 'Introduction', 'Understanding', 'Connect']
})
# 使用 merge 进行外连接,并排序
out = (df1.merge(df2, how='outer',
left_on=[df1['level'], df1['title']],
right_on=['level', 'title'])
.sort_values(by=['level'])
)
print(out)