基于多列合并 Pandas DataFrames 的实用指南


基于多列合并 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 参数中指定要合并的列。

无限画 无限画

千库网旗下AI绘画创作平台

无限画 574 查看详情 无限画
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  # 魏军讲产品和营销推广  # 多个  # 中文网  # 可以通过  # 相关文章  # 并在  # 不需要  # 还可以  # 可以使用  # 详细介绍  # 如何使用 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: MongoDB聚合管道:高效统计列表中各项的文档数量  C++如何实现矩阵乘法_C++二维数组矩阵运算代码示例  《糖豆》添加舞曲方法  QQ邮箱官方登录页_腾讯出品安全稳定的邮箱服务  如何使用 Optional 类型并满足 Pylint 的类型检查  汽水音乐车机版 汽水音乐车机版官方入口  《全民k歌》网页版最新登录入口一览  t3出行如何使用微信支付  263企业邮箱如何设置邮件转发功能  Win10怎么设置快速启动 Win10开启快速启动设置方法  深入理解Python对象引用与链表属性赋值  C#解析来自网络的XML流数据 实时错误处理与重试机制  汽水音乐官方网站登录入口_汽水音乐网页版进入链接  《火影忍者:木叶高手》快速升级攻略  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  VS Code快捷键when上下文子句的妙用  《咸鱼之王》新版孙坚技能解析  mysql如何回滚事务_mysql ROLLBACK事务回滚方法  为什么XML解析器对大小写敏感? 理解XML规范中的大小写规则与最佳实践  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  J*aScript中高效处理用户输入:从Keyup事件到表单提交的优化实践  c++如何掌握指针的核心用法_c++指针入门到精通指南  德邦快递收费标准详解  《单词速记宝》设置学习计划方法  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  中大网校app做题记录清除方法  《东方财富》条件单关闭方法  Go语言中方法接收器的选择:值类型还是指针类型?  荣耀magicv5怎么上手测评  除了Copilot,还有哪些值得一试的VS Code AI插件?  PPT智能排版生成入口 免费PPT内容自动生成平台  QQ邮箱注册地址 免费获取QQ邮箱账号  composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?  《饿了么》拼好饭点外卖教程2025  如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现  Highcharts雷达图轴线交点数值标注指南  《深林》冬季章节图文攻略  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  《下一站江湖2》心法融合技巧  铁路12306官网登录入口 铁路12306在线购票官方平台  快手缓存清理方法  Composer reinstall命令重装损坏的包  Python项目中的条件导入:解决跨模块依赖问题  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  网页版网易云音乐入口_网易云音乐在线官网登录  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  Teambition网盘如何共享文件  Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解  构建可配置的J*aScript加权点击计数器与共享总计功能 

 2025-11-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.